关于类型转换

来源:百度知道 编辑:UC知道 时间:2024/07/01 14:58:13
i是int
i=10+"a"+1.5*5-10/3

转换的时候,是把10+"a"+1.5*5-10/3计算完后转换成int,还是在计算过程中转换成int计算?

i=10+'a'+1.5*5-10/3;

看情形,同运算顺序有关
(顺序1) 1.5*5 转换成float做乘法 [先乘除]
(顺序2) 10/3 int除int [先乘除]
(顺序3) 10+'a' 转换成 int
(顺序4) 转换 (1) 的float 结果 成 int 结果
(顺序5) 3的结果,4 的结果, 2的结果 都是 int ,得最后结果

另外,有可能 同编译器 编译时选择的优化级有关。

这两个结果相同(证实顺序2是int除int ):
i=10+ 'a'+1.5*5-15/4;
i=10+ 'a'+1.5*5-15/5;

这两个结果不同(证实顺序1是float乘法):
i=10+ 'a'+1.1*5-15/5;
i=10+ 'a'+1.4*5-15/5;