逻辑 && 语句

Logical && statement

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

 char c;

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

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

当我输入 0 到 9 之间的数字时,我得到正确的输出 - "It's a digit"。但是当我输入类似 197 的内容时,我得到相同的输出。但在逻辑运算符 (&&) 中,这两个条件都应该满足。为什么当数字大于 9 时它的计算结果为真?

顺便说一句,如果你们不知道,scanf 允许您在 Xcode 控制台或终端中输入一些东西。

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

char c,意味着scanf("%c", &c)只能将单个字符读入char变量c。因此输入 197 将读作 1c,使逻辑 && 为真。 Look at this compilation