我想了解为什么以下代码不能正常工作:
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控制台或终端中输入内容。
答案 0 :(得分:2)
char c
,暗示scanf("%c", &c)
只能将单个字符读入char变量c
。因此,输入197
将在1
中显示为c
,从而使逻辑&&
成立。 Look at this compilation
答案 1 :(得分:1)
你只读“1”。这是在你的范围内。