我有以下代码:
int32 var1 = 81;
double var2 = 2;
if ((var1/10) < (var1 + var2) / 10)
{
some code to execute;
}
就我的理解而言,在划分时除去余数,因此if语句应该解析为&#34;如果8&lt; 8然后执行&#34;所以不应该执行,但确实如此,有点难过。是因为我使用的是不同的变量类型吗?
我已经尝试分别打印(var1 / 10)和(var1 + var2)/ 10的结果,并且它们都输出8到控制台。
答案 0 :(得分:8)
是因为我使用的是不同的变量类型吗?
是的,这是正确的:
var1/10
是8
(整数除法)
(var1 + var2) / 10
是8.3
(浮点除法; var1
被提升为浮点数。)
在评估if
时,8
被提升为浮点数。
8.0 < 8.3
是true
。所以if
语句执行。
他们都输出8到控制台。
不,他们没有。