<分区>
我不明白为什么会这样?
int a = 012;
int b = 12;
if (a == b) {
NSLog(@"equal");
}else
NSLog(@"not equal");
为什么打印不相等?
标签 objective-c c int compare
<分区>
我不明白为什么会这样?
int a = 012;
int b = 12;
if (a == b) {
NSLog(@"equal");
}else
NSLog(@"not equal");
为什么打印不相等?
最佳答案
好的。这是因为 C int 类型将带有前导零的文字解释为八进制。
为了证明这一点,请将您的示例调整为以下内容:
int a = 012;
int b = 12;
if (a == b) {
NSLog(@"%d does equal %d", a, b);
} else {
NSLog(@"%d does NOT equal %d", a, b);
}
输出:
10 does NOT equal 12
那是因为在八进制中 (1 * 8 = 8) + 2 = 10
可在以下位置找到更多信息: https://en.wikipedia.org/wiki/Integer_literal#Affixes
关于objective-c - 为什么两个 Integer 不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37544077/