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

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

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)转换与枚举类型
枚举类型对象或枚举成员将自动转换为整型

相关文章:

  • 2021-12-10
  • 2021-11-20
  • 2021-07-03
  • 2021-06-01
  • 2021-05-31
  • 2021-10-20
  • 2022-01-17
猜你喜欢
  • 2021-04-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-17
  • 2022-12-23
  • 2021-11-11
相关资源
相似解决方案