用getchar()读取整数

时间:2016-01-22 17:28:01

标签: c

我尝试使用getchar()读取整数。这是我使用的代码:

int n

thisChar初始化为零,int被声明为start of heading

对于单个数字输入,n返回-47,这意味着首先读取thisChar的字符值。我在while表达式中分配 ..SalesOrderItems = getOrderLines(sql1[i].Id); 的方式是否有不正确之处?

2 个答案:

答案 0 :(得分:5)

缺少括号:

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();
}

答案 1 :(得分:3)

!=的优先级高于=运算符的优先级。因此,表达式

while(thisChar = getchar() != '\n') {...}  

将被解析为

while(thisChar = (getchar() != '\n')) {...} 

,比较getchar() != '\n')的结果将分配给thisChar

您需要将子表达式thisChar = getchar()放在括号

while((thisChar = getchar()) != '\n') {...}