繁体   English   中英

用getchar()读取整数

[英]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' ,即始终为10 ...

请注意,您还应该处理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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM