【牛客杂记】之类型转换

表达式会包含隐式类型转换,它由编译器自动执行,不需要程序员自己介入

*何时发生隐式类型转换*

1.在混合类型的表达式中,操作数会被转换为相同类型

eg: int a ; double b;
a>=b; 这时a被转换为double

2.条件表达式会被转换为bool类型
(1)条件操作符(? :)中的第一个操作数
(2)逻辑非(!)、逻辑与(&&)、逻辑或(||)的操作数都是条件表达式
(3)if、while、do while 以及 for 的第二个表达式
3.初始化和赋值
4.在函数调用时,所传递的参数也可能发生隐式类型转换

*如何转换*

1.算术转换 (保证在执行操作前,将二元操作符转换为同一类型,并使表达式的值整型提升)
这里写图片描述

32位机器:long 和 int 通常用一个字长表示,此时转换均为unsigned long
若表达式包括 signed 和unsigned int,signed会被转换为unsigned

2.其他隐式转换
(1)数组名转换为指向其中第一个元素的指针
<任意数据类型的指针都可以转换为void*,整型数值常量0可以转换为任意类型指针>
(2)指针值可转换为bool(若指针为0,转换为flase;否则为true)
(3)算术类型和bool的转换
这里写图片描述
这里写图片描述
(4)转换与枚举类型
枚举类型对象或枚举成员将自动转换为整型

猜你喜欢

转载自blog.csdn.net/apt1203jn/article/details/79845403