在C语言中,不同类型的数据可以在同一个表达式中进行混合运算,运算时要进行类型转换。上面的问题实际上就是整型数据与实型数据之间的转换。在进行运算时,不同类型的数据要转换成同一类型,然后再进行运算,数据的转换方式有两种:一种是自动转换(隐式转换),另一种是强制转换(显式转换)。
1.数据类型的自动转换
自动转换的规则是按照低类型转换到高类型或赋值号右边的类型转换到赋值号左边的类型。例如:
(1)字符型(char)和短整型(short)必须要先转换成整型(int)。
(2)单精度型(float)必须要先转换成双精度型(double)。
(3)若两个操作数之一为double型,则另一项也转换为double型,运算结果为double型。或者,如果两个操作数之一为long型,则另外一项也转换为long型,运算结果为long型。否则,如果两个操作数之一为unsigned型,则另外一项也转换为unsigned型,运算结果为unsigned型。
(4)赋值号的右边类型转换到赋值号左边的类型,结果为赋值号左边的类型。当把右边的浮点型转换成整型时,去掉小数部分;把右边的双精度型转换成单精度型时,进行四舍五入处理。
【自动类型转换实例】
在本题中,变量a为浮点型数据,s为整型数据,ch为字符型数据,在执行表达式a+s时,因为有浮点型数据,所以a和s均转化为double型数据进行计算,最后结果也为double型;在执行表达式s+ch时,因为整型比字符型级别高,所以ch转化为整型数据进行计算,最后结果也为整型,本程序的输出结果为8,4。
所有这些转换都是由系统自动进行的,使用时只需了解结果的类型即可。
提示:要转换的表达式要用括号括起来,如(int)(x+y)与(int)x+y是不同的,后者相当于
(int)(x)+y,也就是说,只将x转换成整型,然后与y相加。无论是强制转换还是自动转换,都不会改变数据说明时对该变量定义的类型。(www.xing528.com)
2.数据类型的强制转换
强制类型转换表达式的形式如下:
(类型名)(表达式)
上述形式中,(类型名)称为强制类型转换运算符,利用强制类型转换运算符可以将一个表达式的值转换成指定的类型,这种转换是根据人为要求进行的。
例如:(char)(x+y);,将(x+y)的值强制转换为字符型。
(double)(m*n);,将(m*n)的值强制转换为double类型。
强制类型转换实例如下:
本程序的输出结果是:
本程序中,将price的值强制转换成int类型,然后赋值给变量inprice,所以inprice的值是123。但是price的值虽被强制转换为int型,但price本身的类型并不改变,price的值仍为123.0。
提示:在进行强制类型转换时,得到的只是一个所需类型的中间值,原来变量的类型未发生变化,在使用时应注意强制类型转换的这一特点。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。