This question already has answers here:
What is special about numbers starting with zero?
(4个答案)
3年前关闭。
我最近在测试代码中各种x值时遇到了以下问题。
我将尝试仅说明问题。
输出:
当x = 1234,1234
对于几乎所有以0开头的数字,我都会得到不同的值。
例如:x = 0562给出370,依此类推。
我尝试使用各种在线C++编译器,但都给出相同的输出。
我试图通过Google搜索该问题,但找不到合适的答案。
(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