#include <iostream>
using namespace std;
int main()
{
cout<<"sizeof(short)= "<<sizeof(short)<<endl<<endl;//short在32位的机器上是16位,这里输出2应该没意见吧?
short a1=32767;//32767=2^15-1,二进制表示0111 1111 1111 1111
short a2=65535;//65535=2^16-1,二进制表示1111 1111 1111 1111,这样子赋值理论上没有越界吧?
short a3=(a1*131074+a1+a1)/131076;//这里有个问题,就是中间值的问题,131076*a1这么大的中间值,存在哪啊?
cout<<"a1= "<<a1<<endl<<endl;//输出32767正常。
cout<<"a2= "<<a2<<endl<<endl;//这里有问题,为什么显示-1呢?
cout<<"a3= "<<a3<<endl<<endl;//输出0
system("pause");//4294967295
return 0;
}
using namespace std;
int main()
{
cout<<"sizeof(short)= "<<sizeof(short)<<endl<<endl;//short在32位的机器上是16位,这里输出2应该没意见吧?
short a1=32767;//32767=2^15-1,二进制表示0111 1111 1111 1111
short a2=65535;//65535=2^16-1,二进制表示1111 1111 1111 1111,这样子赋值理论上没有越界吧?
short a3=(a1*131074+a1+a1)/131076;//这里有个问题,就是中间值的问题,131076*a1这么大的中间值,存在哪啊?
cout<<"a1= "<<a1<<endl<<endl;//输出32767正常。
cout<<"a2= "<<a2<<endl<<endl;//这里有问题,为什么显示-1呢?
cout<<"a3= "<<a3<<endl<<endl;//输出0
system("pause");//4294967295
return 0;
}