我从来没有见过这样一个而语句。
while(printf("> "), fgets(str, 100, stdin), !feof(stdin)) {
..
..
}我在网上读到,当循环出来的条件是最右边的!那么,上面的 Then 语句相对于
while(!feof(stdin))
{
printf("> ");
fgets(str, 100, stdin);
...
...
}另外,当语句接受表达式时,1,1,1是C中的有效表达式吗?
发布于 2010-12-06 07:21:40
给出的两个循环没有相同的含义。通过以这种方式使用逗号运算符,作者能够指定应该在每次迭代中执行的代码,即使循环本身从未被输入。它更像是一个do ... while ()循环,或者类似于以下内容:
printf("> ");
fgets(str, 100, stdin);
while(!feof(stdin)) {
..
..
printf("> ");
fgets(str, 100, stdin);
}发布于 2010-12-06 07:13:43
最好把逗号运算符看作是一个操作符。就像+是一个运算符一样,所以2 + 3是一个表达式(它恰好导致5的值),,也是一个运算符,因此0, 1是一个有效的表达式(因为这是最后一个操作数),因此0, 1是一个1的值。
发布于 2010-12-06 07:25:42
你提议的修改是不对等的。这是:
while (1) {
printf("> ");
fgets(str, 100, stdin);
if (feof(stdin)) { break; }
...
...
}相反,我建议把工作分解成一个函数:
int get_input(char* buffer, int size) {
printf("> ");
fgets(buffer, size, stdin);
return !feof(stdin);
}
while (get_input(str, 100)) {
...
...
} https://stackoverflow.com/questions/4364044
复制相似问题