首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-10-02 
关于数值溢出与扩展的问题#include iostreamusing namespace stdint main(){short int xx 0x8000co

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

#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 以后才参加的运算。

热点排行