while(menu(),scanf("%c",&choice)==1 && choice!='f')
while(menu(),scanf("%c",&choice)==1 && choice!='f')
学C以来常用while,但只用到一个参数,第一次看到用两个参数的,其中menu()是一个函数调用。
根据程序的意思会先调用menu(),然后等待输入一个字符进行判定。
while循环需要括号内为真值,但是menu()返回类型是void,scanf("%c",&choice)==1 && choice!='f') 可返回一个逻辑值,那么括号内究竟是如何判定真假的?是只观察第二个参数的逻辑值吗?
请高手帮忙解惑,谢谢~
[解决办法]
很明显,这是一段装B代码。
其实很简单,while的条件是有一个逗号运算符组成。
讲C/C++ 语法的书都讲过吧。
逗号运算符以最后一个表达式的值为准。
其实:
while(menu(),scanf("%c",&choice)==1 && choice!='f')
就等于:
menu();
while(scanf("%c",&choice)==1 && choice!='f')