在以下代码中比较的值是多少?
while ((c = getchar()) != EOF)
if ( c == '\n')
Run Code Online (Sandbox Code Playgroud)
我知道这'\n'是一个常量变量,因为单引号.我知道它代表ASCII表上字符的数值,对吗?这相当于110.但是那是什么
((c = getchar()) != EOF) 返回?
谢谢
关键点是c必须是int:
int c;
while ((c = getchar()) != EOF) { char read_value = c; /* ... */ }
Run Code Online (Sandbox Code Playgroud)
假设a int可以保存的值多于char系统的窄多字节编码使用*或者至少更多的值,并且当它无法读取更多数据时getchar返回特殊常量EOF.否则,保证您可以转换c为a char并获取已读取的字符的值.
将c自身声明为a 是一个常见错误char,在这种情况下,循环可能永远不会终止,因为您可能无法捕获特殊值EOF,否则会出现一个无法区分的完全有效的字符(char)EOF.
*)例如,如果a char和inta在给定平台上都是32位宽,那么完全没问题,只要说窄流只能返回值在[-128,128]范围内的单位,并且你可以使用-200as EOF.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |