逻辑&&声明

时间:2015-01-21 14:28:10

标签: objective-c c scanf

我想了解为什么以下代码不能正常工作:

 char c;

 NSLog(@"Enter a single character: ");
 scanf("%c", &c);

 if (c >= '0' &&  c <= '9') {
     NSLog(@"It's a digit");
 }

当我输入0到9之间的数字时,我得到正确的输出 - &#34;它是一个数字&#34;。但是当我输入像197这样的东西时,我会得到相同的输出。但在逻辑运算符(&amp;&amp;)中,两个条件都应该满足。当数字大于9时,为什么评估为真?

顺便说一下,如果你们中的任何一个人都不知道,scanf允许你在Xcode控制台或终端中输入内容。

2 个答案:

答案 0 :(得分:2)

char c,暗示scanf("%c", &c)只能将单个字符读入char变量c。因此,输入197将在1中显示为c,从而使逻辑&&成立。 Look at this compilation

答案 1 :(得分:1)

你只读“1”。这是在你的范围内。

相关问题