您的位置:首页 > 其它

unsigned和signed比较

2009-11-12 14:21 946 查看
测试如下代码:

unsigned char ui = -10;
char c = -10;
char i = 10;

if ((unsigned char)c == ui)
{
printf("%d, %d/n", i, ui);
}

system("pause");


unsigned类型也可以存放负数,负数在还是右值常数的时候就在计算机内被保存为了补码形式,赋值给unsigned类型之后,内存中的二进制不变,但是意义变成了一个无符号数,可以见打印结果为10,246,即使将ui的打印格式转换符换成%u也一样。

若要将变量c和ui进行比较,则必须将c强制转换为unsigned char类型(或将ui强转为char类型)计算机才能将两者视为相等,否则两者虽然在内存中表示完全一样,但被视为不等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: