int值前面的额外0是什么意思?

时间:2011-01-18 06:00:19

标签: c++ octal

从一段混淆的代码中激发灵感,我有一个关于为整数赋值的小问题:

#include <iostream>
#include <cstdio>

int main() {
    int i = 0101;
    std::cout << i << "\n";
}

输出是65,我不知道65来自哪里?有什么想法吗?

2 个答案:

答案 0 :(得分:11)

它指定一个八进制(base-8)编号:0101 == 1 * (8 * 8) + 1 == 65

答案 1 :(得分:0)

兰伯特已经解释过了。那么让我告诉你还有什么可以做的。

您可以编写十六进制整数:

int main() {
    int i = 0x101; //0x specifies this (i.e 101) is hexadecimal integer
    std::cout << i << "\n"; //prints 257 (1 * 16 * 16 + 1)
}

输出:

257