C语言新手求教:含float和int的数学表达式结果类型判断方法
C语言混合类型表达式的结果类型判断方法
先明确核心规则:C语言表达式运算时会执行寻常算术转换——不同数值类型运算时,精度更低的类型会自动转换为精度更高的类型,转换优先级大致为:int < float < double。
针对你给出的表达式 x + a%3*(int)(x+y)%2/4;,我们一步步拆解类型变化:
- 第一步:计算
(int)(x+y)
x和y都是float,相加后结果为float;通过强制类型转换(int)转为int类型,这部分最终是int。 - 第二步:计算
a%3
a是int,3是字面量int,取模运算结果为int(7%3=1)。 - 第三步:计算
a%3 * (int)(x+y)
两个int类型相乘,结果仍为int。 - 第四步:计算
上面的结果 %2int与int取模,结果还是int。 - 第五步:计算
上面的结果 /4int与int做整数除法,结果依旧是int。 - 第六步:计算
x + 上面的结果
x是float,前面的结果是int,此时int会自动转换为float,最终整个表达式的结果类型为float。
另外补充一点:如果表达式里包含double类型,所有更低精度的类型都会转为double参与运算。
内容的提问来源于stack exchange,提问作者essesoul
相关产品推荐
相关产品推荐

