在C语言及C++中,一个整形数值前如果有一个数字0,则代表该整形数值为八进制数。例如int a,a = 010,则a的十进制数值为8,八进制数值为10。但是在输入a的时候,输入010,如果用scanf(“%d”,&a),则将会被当做十进制10识别。而在c++中使用cout<<a时,也将会被默认为十进制输入。以下是测试用例。
1 | #include<iostream> |
由此可知,cout默认是以十进制进行输入的。因此,我们在赋值与输入时,得格外注意进制之间的转换。例如:
1 | struct temp{ |
我们经常会在赋值时为了将数值对齐显得美观而在数值之前添加0,这样往往会导致得到的结果错误,因为系统将之默认为八进制赋值。