为什么这两个示例的输出在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
答案 0 :(得分:4)
来自cppreference:
八进制字母是数字零(0),后跟零个或多个八进制数字(0、1、2、3、4、5、6、7)
因此025
实际上是对应于十进制21
的八进制文字,这就是为什么您的答案相差4(25-025
或25-21
)的原因。
答案 1 :(得分:2)
在第一个示例中,您已将八进制文字的值分配给“ a”。它与十进制的25不同。等效于21的十进制。