#include<iostream>
using namespace std;
int main()
{
int a[]={1,2,3,4};
cout<<sizeof(a)/sizeof(a[0])<<endl;
if(-1<sizeof(a)/sizeof(a[0]))
cout<<"Hello,world!\n";
else
cout<<"error!\n";
return 0;
}
这是我在查找有关unsign资料的时候看见别人提出的,在c++上面试了一下,果然是这样,如果用double或者float都是可以正常得到结果的,int却是错的结果。
用int,double,float强制转换输出时都是显示-1。
猜测int(默认类型)可能是用unsigned int(-1)来写的,输出为4294967295
而且负数在计算机中本来就是以补码的形式存放,在8位二进制数中是1开头,所以我也有猜测是不是比较大小的符号是比较的二进制码。