This question already has answers here:
What is special about numbers starting with zero?

(4个答案)


3年前关闭。




我最近在测试代码中各种x值时遇到了以下问题。

我将尝试仅说明问题。
#include <iostream>

int main()
{
     int x = 01234;

     std:: cout << x ;

     return 0;
}

输出:

当x = 1234,1234
 x = 01234 , 668

 x = 001234 , 668

 x = 240 , 240

 x = 0240 , 160

 x = 00240 , 160

对于几乎所有以0开头的数字,我都会得到不同的值。
例如:x = 0562给出370,依此类推。

我尝试使用各种在线C++编译器,但都给出相同的输出。
我试图通过Google搜索该问题,但找不到合适的答案。

最佳答案

好像您被八进制字面量打中了!以0开头的任何数字文字都将以8为底进行解释。

01234 = 1 × 8^3 + 2 × 8^2 + 3 × 8^1 + 4 × 8^0
      = 1 × 512 + 2 × 64 + 3 × 8 + 4 × 1
      = 512 + 128 + 24 + 4
      = 668

0240 = 2 × 8^2 + 4 × 8^1 + 0 × 8^0
     = 2 × 64 + 4 × 8 + 0 × 1
     = 128 + 32
     = 160

关于c++ - 为什么int x = 01234给出x的输出值为668? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43559454/

10-12 16:16