c语言强制类型转换怎么做(C语言中的隐式类型转换)
c语言强制类型转换怎么做(C语言中的隐式类型转换)printf("a b=%d\n" a b); printf("b=%d\n" b);{ unsigned int a = 6; int b = -20;
C语言面试中的一些小陷阱:隐式转换. 废话不多说,看看以下的程序,猜猜输出是多少?
代码如下:
#include <stdio.h>
int main(void)
{
unsigned int a = 6;
int b = -20;
printf("b=%d\n" b);
printf("a b=%d\n" a b);
(a b > 6) ? printf("a b%s\n" ">6") : printf("a b%s\n" "<=6");
return 0;
}
结果发现a b在与6进行比较的时候居然是大于6,无符号型与有符号型的整型加法,然后与正整数比较时,符号型整数会进行隐性转换,转换为无符号型,所以会是一个很大的数(最高位不是符号位了!
类似的还有像double/int或者int/double之类的运算,在计算之前都存在隐性转换,先转换成double型再进行计算,结果就是double型了!