在 C/C++ 中打印整数
Print Integer in C/C++
我有一个简单的程序。
#include <cstdio>
int main()
{
int num = 000012345; printf("%d\n",num);
return 0;
}
上面的程序给出了5349,为什么?我的意思是它应该是错误的,但为什么是 5349?
0
开头的数字在c/c++中是八进制的。
Octal = 000012345
Decimal= 0×8⁸+0×8⁷+0×8⁶+0×8⁵+1×8⁴+2×8³+3×8²+4×8¹+5×8⁰ = 5349
Binary = 1010011100101
Hex = 14E5
以一个或多个前导零开头的数字指定八进制格式而不是十进制格式。所以 000012345 是 1 * 8^4 + 2 * 8^3 + 3 * 8^2 + 4 * 8^1 + 5 * 8^0 = 5349.
同理,0x开头的数字是十六进制的。
我有一个简单的程序。
#include <cstdio>
int main()
{
int num = 000012345; printf("%d\n",num);
return 0;
}
上面的程序给出了5349,为什么?我的意思是它应该是错误的,但为什么是 5349?
0
开头的数字在c/c++中是八进制的。
Octal = 000012345
Decimal= 0×8⁸+0×8⁷+0×8⁶+0×8⁵+1×8⁴+2×8³+3×8²+4×8¹+5×8⁰ = 5349
Binary = 1010011100101
Hex = 14E5
以一个或多个前导零开头的数字指定八进制格式而不是十进制格式。所以 000012345 是 1 * 8^4 + 2 * 8^3 + 3 * 8^2 + 4 * 8^1 + 5 * 8^0 = 5349.
同理,0x开头的数字是十六进制的。