从0开始的int发生了什么?ex 00101

Mar*_*1ni 0 c++

我想知道,当一个int以零开始时会发生什么?

int main() {
    int myint = 01001;
    cout << myint;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么输出:

513
Run Code Online (Sandbox Code Playgroud)

我试过几个编译器.

小智 7

然后将整数视为八进制数.所以,

01001
Run Code Online (Sandbox Code Playgroud)

等于

1 * 8 ^ 0 + 0 * 8 ^ 1 + 0 * 8 ^ 2 + 1 * 8 ^ 3 = 1 + 0 + 0 + 512 = 513
Run Code Online (Sandbox Code Playgroud)

那里没有魔法.

  • @ Martol1ni不写领先0. (4认同)
  • @MarkRansom:你可能已经知道了这一点,但对于其他人来说:[Python 3不再提供带有前导零的八进制文字](http://docs.python.org/release/3.0.1/whatsnew/3.0.html#整数).它们将使用'0o`前缀编写,例如.Python 3中的"0o1001". (3认同)