void main()
{
int m;
while(m=menu(),m)
{
switch(m)
{
case 1:
create_file();
break;
case 2:
buy();
break;
case 3:
add_value();
break;
case 4:
add_card();
break;
case 5:
del_card();
break;
case 6:
set_flag();
break;
case 7:
output();
break;
default:
printf("输入有误,重新输入!\n");
}
}
为什么while(m=menu(),m)还有个,m是什么意思?
int menu() //菜单
{
int choose;
printf("\n\n\n\n");
printf(" |-------------------------------|\n");
printf(" | 饭卡管理系统 |\n");
printf(" |-------------------------------|\n");
printf(" | 请输入选项编号(0--7) |\n");
printf(" |-------------------------------|\n");
printf(" | 0——退出 |\n");
printf(" | 1——建立饭卡文件 |\n");
printf(" | 2——买饭 |\n");
printf(" | 3——续钱 |\n");
scanf("%d",&choose);
return choose;
}
这是前面的一段~~~~~ 再问各位大哥一下。 要想0退出是不是非得这么写 while(m=menu(),m)
由于您没有给完整上下文,所以无法做出正确的判断。
但估计m的作用是保存从用户输入处得到的选项。
由于c规定,用Int表示布尔型时,任何非0的int都表示true,所以,只要用户输入的是1、2、3、4、5、6、7...中的一种,循环就会继续。。然后通过switch对m进行判断,执行对应操作。。当m=0时,循环结束,退出。。
建议你为了方便理解,可以把代码改成
void main()
{
int m;
m=menu(),
while(m)
{
switch(m)
{
case 1:
create_file();
break;
case 2:
buy();
PS:中间的逗号是逗号运算符,连接并列成分。m=menu()其实并不多余,只是位置放的不易理解!
m=menu()是一个求值的过程,而循环的测试表达式是m。
该段代码可以写成如下:
m=menu()
while(m)
{
.....
.....
m=menu()
}
补充一句:这里的m=menu()不是多余的。
看见后面的
;
了吗?
其实完整格式是
while(P3_7==0)
{
;
}
就是一直循环到不等于0
什么都不干
实际上正规的写法应该是
NULL;
而不是只有一个;
只有一个;
在代码优化时会被优化掉