关于C里的符号数运算问题
unsigned int i = 1;
unsigned int j = 9;
if((i-j)>=0)
{
i++;
}
else
{
i--;
}
这里的i-j的值是多少?是执行if里边的还是else里边的?
[解决办法]
执行if语句,因为结果是unsigned型,结果永远为整数,如果int是4个字节结果为0xfffffff8=4294967288,int是两个字节结果为0xfff8=65528
[解决办法]
i和j都是无符号类型的数据,那么他们的结果也是无符号类型的。即使是i是无符号的,而j是有符号的,那么i-j的结果也是无符号的,因为在运算前j会有一个隐式类型提升。