5

受一段混淆代码的启发,我有一个关于为整数赋值的小问题:

#include <iostream>
#include <cstdio>

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

输出是 65,我不知道 65 是从哪里来的?任何的想法?

4

2 回答 2

12

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

于 2011-01-18T06:01:41.747 回答
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
于 2011-01-18T06:10:26.110 回答