如何转换int和unsign int???
char foo(void)
{
unsigned int a = 6;
int b = -20;
char c;
(a + b > 6) ? (c = 1) : (c = 0);
return c;
}
a+b的值不是-14,而是一个unsigned int类型的数4294967382,这个数字是如何来的?
(a + b > 6) ? (c = 1) : (c = 0); //这个地方 要有一个隐藏的类型转换 也就是int b转换成unsigned int类型 因为做运算的时候 要精度相同 避免丢失数据 因为是无符号的 自然就a+b>6了 所以选择C=1
至于怎么转换,其实很简单,int和unsigned int相比,只是符号位的区别,将以前表示符号的符号位看成是表示数值的就行!
比如:
对于4294967382
二进制是:
100000000000000000000000001010110
把第一位看做符号位,是负号,后面那一串,就是14
所以是-14
阅读(4028) | 评论(1) | 转发(0) |