c语言while用法

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()其实并不多余,只是位置放的不易理解!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-04
这是一个逗号表达式。
m=menu()是一个求值的过程,而循环的测试表达式是m。
该段代码可以写成如下:
m=menu()
while(m)
{
.....
.....
m=menu()
}

补充一句:这里的m=menu()不是多余的。
第2个回答  2009-07-04
m=menu(),m一起构成逗号运算符,m=menu()是多余的,如果m!=0,则执行循环.
第3个回答  2009-07-04
恩 楼上说的真对,真多余!!我看着都头疼!!赋值表达式比逗号优先级高,先赋值,然后再做逗号表达式,还是看M的值是否是0,是0退出循环!!
第4个回答  2019-02-26
第二个
看见后面的
;
了吗?
其实完整格式是
while(P3_7==0)
{
;
}
就是一直循环到不等于0
什么都不干
实际上正规的写法应该是
NULL;
而不是只有一个;
只有一个;
在代码优化时会被优化掉

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网