在向K&R学习时,我尝试将练习1.5.3中的while循环修改为for循环:
#include <stdio.h>
main()
{
int c, nl;
for (nl = 0; (c = getchar()) != EOF; if (c == '\n'){++nl}){}
printf("%d\n", nl);
}
旁注:如果这段代码看起来很糟糕,我深表歉意。目前,我只是尝试编写有效的 C 代码,当我觉得我已经适应了该语言的一般概念时,我将开始为“人类”编写代码。
当我尝试构建并运行代码时,出现此消息,
error: expected expression before 'if'
我尝试搜索此错误,但只能找到引用其他语言或三元运算的答案,如果可能的话,我想避免这种情况。预先感谢您对解决此问题的任何见解(如果有的话)。
最佳答案
不,但是如果你真的想将它挤压在循环中(尽管我不推荐它),你可以这样做
nl += (c == '\n')? 1: 0
或者,正如@LogicG8建议的那样,只是
nl += (c == '\n')
尽管它有点不太清楚,并且可能违反一些编码准则。
关于c - for 循环的第三个表达式 (C) 中是否可以包含 IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32513339/