当int和unsigned混合运算时,未标明是以何种方式运算得出结果,默认转换成精度大方式进行运算。当确定以何种方式得出结果时,值是不一样的。
例:
#include<stdio.h>
int main()
{ int a=-6;
unsigned int b=4;
printf("%d/n",a+b);
printf("%u",a+b);
return 0;
}
结果是:-2
4294967294
注:"4294967294=2^32-2"
因为%u是无符号占位符。
而%d是有符号占位符。
例:
#include<stdio.h>
int main()
{ int a=-6;
unsigned int b=4;
printf("%d/n",a+b);
printf("%u",a+b);
return 0;
}
结果是:-2
4294967294
注:"4294967294=2^32-2"
因为%u是无符号占位符。
而%d是有符号占位符。