有符号int与无符号int比较的后果










signed int 型变量被转换成unsigned int型变量。-1转换成unsigned int的结果是一个非常巨大的正整数(32位系统上是2的32次方-1),需要进行强转为int型。
位域变量

struct data
{
int flag:1;
int other:31;
};
printf("data size %d\n",sizeof(data));
data test1;
test.flag = 1;
if(test.flag ==1)
{
printf("true");
}
else
{
printf("false");
}
int的位域变量,而用一个bit表示int时,这一位是用来表示有符号位的,带符号的一个bit的位域变量的取值范围是0或-1.无符号的一个bit的位域变量的取值范围是0或1,故1赋给flag时会出现溢出,flag变为-1. 














Reference:http://wenku.baidu.com/view/670eff4bf7ec4afe04a1dfd7.html