如果语句执行时,我认为它不应该是 - C ++

时间:2017-01-12 09:26:13

标签: c++ if-statement

我有以下代码:

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到控制台。

1 个答案:

答案 0 :(得分:8)

  

是因为我使用的是不同的变量类型吗?

是的,这是正确的:

var1/108(整数除法)

(var1 + var2) / 108.3(浮点除法; var1被提升为浮点数。)

在评估if时,8被提升为浮点数。

8.0 < 8.3true。所以if语句执行。

  

他们都输出8到控制台。

不,他们没有。