C语言Day9:C语言类型转换规则
各位亲爱的读者,大家好!今天博主给大家带来的内容是C语言中的数据类型转换规则
一.自动类型转换
当程序中有不同的数据类型参与运算后,系统首先会按照一定规则尝试对运算数进行临时类型的转换。规则如下:
(1)当float类型参与运算时,必定先转换为double类型;
(2)当char、short、unsigned char、unsigned short类型数据参与运算时,必定先转换为int类型;
(3)当int、unsigned、long、double类型参与运算的时,不必统一到最高级的double类型,只需要统一转换到两个数据中优先级高的那个类型即可。例如int和unsigned类型数据运算,仅需要统一转换为unsigned类型即可
注意:在运算过程中,变量本身的类型不会发生改变的,改变的只是变量中存储的值,且变量值类型的改变也仅是在计算过程中被临时改变而已。
二.赋值类型转换
一般情况下,C语言赋值语句要求赋值号两端数据的类型保持一致,但在实际运用中存在赋值号左右两边类型不一致的情况,此时需要按照赋值类型转换规则进行类型转换,具体转换规则如下:
(1)小类型数据(所占空间较小的类型)存入大类型变量时直接转换即可,如int类型数据存入float,double等大类型变量时,直接将整数转为实数存入即可
(2)将float,double类型变量存入整数类型变量时,只要整数部分不超过int类型表示范围,直接舍弃小数部分(不考虑四舍五入)存入即可
(3)char类型存入int类型时,因为char只占据一个字节,而整型变量一般占据2或4个字节,所以此时char类型数据存入整型变量最低的那个字节中,整数变量剩余高字节部分自动补0处理
(4)double类型存入float类型时,只要没有超过float类型的表示范围,可以直接转换为float后存入,如果超过了,则会损失精度
(5)short类型存入int或long类型变量时,要进行符号拓展
(6)将unsigned类型整型数据存入int或long整型变量时,不存在符号扩展,只需要将高16个二进制位补0即可。
三.强制类型转换
在实际编程中,有时需要将一个对象的数据类型转换为需要的目标类型,此时可以使用强制转换方法,语法格式如下:
(目标类型)(常量|变量|表达式)
例如:(double)a+(double)(b+c);
解释:将a变量的值临时转换为double类型,同时将b+c的结果也强制转换为double类型,最后两者相加。
注意:C语言强制类型转换只是临时的将变量的值或常量值转换为目标类型,整个计算过程中变量本身的类型始终是不变的。
四.今日总结
在今天的学习中,博主给大家带来了C语言中的类型转换规则,在明天的学习中,博主将会给大家带来printf格式化输出函数的相关内容,在这里感谢大家的关注与支持!欢迎在评论区分享属于你的看法与见解,博主看到后会第一时间回复!