为什么int x = 01234给出x为668的外高值

Why int x = 01234 gives outpiut value of x as 668?

本文关键字:高值 给出 int 01234 为什么      更新时间:2023-10-16

我最近在我测试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 编译器,但都提供相同的输出。我试图搜索这个问题,但找不到适当的答案。

看来您被八分之一的字面击中!以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

数字01234在八进制(基本8(时,当您预先预留A 0时,您将数字定义为八十位。当您以小数为单位打印时,您会得到十进制等效的