C ++:为什么这些结果不同?

时间:2018-08-23 23:09:51

标签: c++

为什么这两个示例的输出在C ++中不同?

int a=025; 
float b=5.5; 
cout<<a+b; 

26.5

int a=25; 
float b=5.5; 
cout<<a+b; 

30.5

2 个答案:

答案 0 :(得分:4)

来自cppreference

  

八进制字母是数字零(0),后跟零个或多个八进制数字(0、1、2、3、4、5、6、7)

因此025实际上是对应于十进制21的八进制文字,这就是为什么您的答案相差4(25-02525-21)的原因。

答案 1 :(得分:2)

在第一个示例中,您已将八进制文字的值分配给“ a”。它与十进制的25不同。等效于21的十进制。