用C / C ++打印整数

时间:2015-06-26 19:38:49

标签: c++ c literals octal

我有一个简单的程序。

#include <cstdio>
int main()
{
   int num = 000012345; printf("%d\n",num);
   return 0;
}

以上程序给出5349.为什么?我的意思是它应该是错的,但为什么5349?

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:2)

以一个或多个前导零开头的数字指定八进制格式而不是十进制。所以000012345是1 * 8 ^ 4 + 2 * 8 ^ 3 + 3 * 8 ^ 2 + 4 * 8 ^ 1 + 5 * 8 ^ 0 = 5349。

同样,以0x开头的数字是十六进制格式。