隐式转换
int a, b;
unsigned int u;
b = a + u;
1,同类型的signed总是向unsigned 转换吗?
2,上面的程序我这样理解是正确的吗?
a+u, a隐式转换为unsigned型,a+u为unsigned型
b=a+u, a+u为unsigned型,b为int型,a+u隐式转换为int
3,例如int a=-1,隐式转换为unsigned int时怎么转换?
[解决办法]
1.不是。只是计算的时候 范围小的向范围大的转换。 unsigned int比signed int范围大。
所以这里这么转换。
2.前者对。 后者也是 a转换为unsigned int,结果也是unsigned int。
最后赋值的时候转换为int,,, 一般编译器会有警告
类型提升。
3.
-1 => 0xffffffff
=> unsigned int ....