读书人

关于数值溢出与扩展的有关问题

发布时间: 2013-10-02 13:10:38 作者: rapoo

关于数值溢出与扩展的问题

#include <iostream>
using namespace std;

int main(){
short int x;
x = 0x8000;
cout<<(x>0)||(x-1<0); //1
cout<<(x>0); //2
cout<<(x-1<0); //3
return 0 ;
}


输出是0 0 1 ; 照理来说该是 0 0 0才对啊。
运行sizeof(x-1)结果为4,意思是第三条语句数值自动扩展了,但为什么第一条语句运行结果又为0?
用的是VC6.0,是编译器本身的原因吗?
[解决办法]
运算之前先对操作数实行整形提升,都变成 int 以后才参加的运算。

读书人网 >C++

热点推荐