[英]Reading integers with getchar()
我正在尝试使用getchar()读取整数。 这是我正在使用的代码:
while (thisChar = getchar() != '\n') {
n = n * 10 + thisChar - '0';
}
int n
初始化为零,并将thisChar
声明为int
对于一位数字输入,n返回-47,这意味着将首先读取start of heading
的字符值。 我在while
表达式中分配thisChar
的方式有什么不对吗?
它缺少括号:
int thisChar;
while ((thisChar = getchar()) != '\n') {
n = n * 10 + thisChar - '0';
}
如果没有这些额外的括号,则始终为thisChar
分配比较getchar() != '\\n'
,即始终为1
或0
...
请注意,您还应该处理EOF
:
int thisChar = getchar();
while (thisChar != EOF && thisChar != '\n') {
n = n * 10 + thisChar - '0';
thisChar = getchar();
}
!=
比=
运算符具有更高的优先级。 因此,表达
while(thisChar = getchar() != '\n') {...}
将被解析为
while(thisChar = (getchar() != '\n')) {...}
比较结果getchar() != '\\n')
将分配给thisChar
。
您需要将子表达式thisChar = getchar()
放在方括号内
while((thisChar = getchar()) != '\n') {...}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.