objective-c - 为什么两个 Integer 不相等?

标签 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/

相关文章:

objective-c - 自动旋转 iOS 8 导航 Controller

ios - 了解如何正确使用 NSRegularExpressions

c - 结构困惑 (2)

c - 如何使用 C 头文件和 CUDA 代码编译 C 代码?

ios - inputAccessoryView 与 UIAlertController 一起显示

objective-c - 使用未声明的标识符 '_bridge'

java - 使用 JNI 从单独的线程调用静态 Java 方法

c++ - 将 double 分配给 const int& vs int 分配给 const int&

php - 数值前面的 0 未被去除

java 将字符串转换为int并删除尾随零