查看: 75|回复: 0

C语言中的算术类型转换

[复制链接]

2

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-7-1
发表于 2025-11-9 21:29:00 | 显示全部楼层 |阅读模式

1.寻常算数转换

在C语言中,当不同类型的操作数参与到算术运算时,编译器会将操作数转换成同一类型,再运算。这一过程被称为寻常算术转换,由于这个过程我们程序员看不见,所以它也是一种隐式类型转换(见整型提升

1.1寻常算数转换的过程

1.1.1整型提升

若操作数是小整数类型(字节大小小于int),会自动进行整型提升,提升为int或unsigned int(见整型提升

1.1.2类型提升

和整型提升很像
若进行完第一步,操作数的类型仍然不同,按转换等级从低到高,将低等级的类型统一转换为操作数中存在的最高等级类型
转换等级如下(由低到高)

int
unsigned int
long
unsigned long
long long
unsigned long long
float
double
long double

2.赋值转换

赋值运算符的右侧的表达式类型,会自动转为左侧的变量的类型,再赋值,这也是一种隐式转换

3.函数传参/返回

这也是隐式类型转换

3.1传参

若实参类型与形参类型不匹配,实参会自动转为形参类型

3.2返回

函数返回值类型会自动转为声明的函数返回类型

4.强制类型转换

通过强制类型转换操作符主动指定转换类型(见操作符),这是显式类型转换



来源:https://www.cnblogs.com/827-s/p/19205336
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部