行计数程序:
1 #include
2
3 main()
4 {
5 int c, nl;
6
7 nl = 0;
8 while ((c = getchar()) != EOF);
9 if (c == '\n')
10 ++nl;
11 printf("%d\n", nl);
12 }
13
执行:
Press ENTER or type command to continue
\n
\n
\n
\n
0
shell returned 2
Press ENTER or type command to continue
Press ENTER or type command to continue
a
a
a
a
0
shell returned 2
最后一行按crtl+d,为什么都是0。还有最后的shell returned为什么是2?谢谢
直接去掉while语句后的分号就可以了
while循环执行后边的语句是一条(或通过花括号得到一个块),因为直接分号了,认为循环的是空语句
去掉后则认为满足循环后执行if判断语句,而++nl;又属于判断语句包含的内容,所以即使没有花括号也可以,
但不能在循环语句后有分号,这个必须注意,任何循环都一样。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。