
1 darasion 2013-06-24 01:33:50 +08:00 回车也算. |
2 edgar 2013-06-24 12:08:24 +08:00 clang那个是警告吧,而且你的gcc版本比较低,高版本的应该也会报错。 |
3 edgar 2013-06-24 12:33:28 +08:00 还有就是,那个1其实是getchar() != EOF的结果,改成(c=getchar())!=EOF应该就可以了 |
4 dndx 2013-06-24 12:39:50 +08:00 c = getchar() != EOF 因为 != 的优先级比 = 高,上面的代码等同于: c = (getchar() != EOF) 所以你的 c 变量在检测到 EOF 之前都是 0 ,估计不是你想要的效果。 改成 (c = getchar()) != EOF |
5 cmi 2013-08-07 00:58:07 +08:00 这题是K&R的Exercise 1-6吧?题目本来就是要验证 getchar() != EOF 的取值是0还是1。 多一个1是因为“回车也算.”。:) 我不明白的地方在于: 由于while (expression)的expression在此例里总是不为0,while循环无法结束,printf("%d - at EOF \n",c )永远无法执行,但是我想让这一句打印出来。 依照系统,EOF被定义为(-1), #ifndef EOF # define EOF (-1) #endif 我即使输入(-1),也无法让getchar() == EOF,这是什么原因?我哪里理解错了? |
6 cmi 2013-08-07 01:05:20 +08:00 刚回复完似乎有点明白了,即使getchar() == EOF,也只不过是给 c 赋了另外一个条件,并没有让c=0,所以while永远无法结束。 但是将一个条件赋予c,这算是什么语法? 这么理解正确吗? |
7 cmi 2013-08-07 01:13:56 +08:00 好像还不对。 这么测试总是要输入回车,这导致getchar() != EOF永远为真。 |
8 echo1937 OP @cmi 感谢你的回复,这个问题我去看了英文版,答案和中文版是不一样的. 英文版的答案是: #include <stdio.h> int main(void) { printf("Press a key. ENTER would be nice :-)\n\n"); printf("The expression getchar() != EOF evaluates to %d\n", getchar() != EOF); return 0; } 看来是中文版的问题吧. |
9 vtvincy 2015-02-04 23:38:18 +08:00 |