快捷搜索:  汽车  科技

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;

}

c语言强制类型转换怎么做(C语言中的隐式类型转换)(1)

c语言强制类型转换怎么做(C语言中的隐式类型转换)(2)

结果发现a b在与6进行比较的时候居然是大于6,无符号型与有符号型的整型加法,然后与正整数比较时,符号型整数会进行隐性转换,转换为无符号型,所以会是一个很大的数(最高位不是符号位了!

类似的还有像double/int或者int/double之类的运算,在计算之前都存在隐性转换,先转换成double型再进行计算,结果就是double型了!

猜您喜欢: