辣鸡然然的日志——002 类型转换

 今天学妹来问我一个程序,为什么输出一直是0?

这个看样子是隐式转换搞的鬼

也就是说因为5和9都是整型数据所以5/9的结果是整型且向下取整为0,而C是浮点型变量,所以输出结果保留两位小数为0.00

而解决方法就是把5/9这个式子改成掺有浮点型的式子,比如:

#include<stdio.h>
#include <math.h>
main()
{
    float F,C;
    scanf("%f",&F);
    C=5.0/9*(F-32);
    printf("C=%.2f",C);
}

这样得到的结果就是想要的了(题目是华氏度和摄氏度的转换)

既然说到了隐式类型转换,就不得不说说显式类型转换了

 第九行没有进行强制类型转换所以输出的是个什么玩应???

 换了一下t和s的顺序,如果不换的话也会导致错误(如果加了好几层括号那我没得话说)

强制类型转换是对紧跟着的第一个变量进行操作而不是对式子得数(看样子优先级还是挺高的,毕竟有括号)

所以总结一下:

隐式转换表示是由小范围的值向大范围的内转化时系统自己进行的转化,不需要人为干预。

而显式转化表示必须是程序员进行转化,或系统无法进行自动转化。

隐式转换与显式转化的区别就是,隐式转换是由系统自动进行的,而显式转换则是由程序员进行转化的。

隐含转换则是自动转换,比如整形转换为长整形,一般是低级向高级转换,不会发生内存溢出。

显式转换,一般是强制转换,需要人工操作转换。而隐含转换则是系统去转换。

比如:浮点型转换为整形,则自动去浮点型整数部分作为整形数据。

猜你喜欢

转载自www.cnblogs.com/jun-ruo-sui-nian/p/diary_002.html