C++中向int类型赋值八进制空字符的行为探究
为什么C++中
int i = '\00';的输出是0? '\00'是C++里的八进制转义字符:反斜杠\后跟的数字会被解析为八进制数,用来对应ASCII字符的数值。这里的两个0组成八进制数00,转换成十进制就是0,和单个'\0'(表示空字符的标准转义序列)完全等价。- 当字符类型的
'\00'赋值给int变量时,C++会自动做隐式类型提升:把字符对应的ASCII数值(0)转换成int类型的0,存储到变量i中。 - 最后
cout输出变量i的数值,自然就显示0。
哪怕写成'\000'(三个八进制0),结果也一样,因为对应的十进制数值始终是0。
内容的提问来源于stack exchange,提问作者Raman Kumar
相关产品推荐
相关产品推荐

