2017-01-12 11 views
1

を私は次のコードを持っている:文の実行であれば私の知る限り、それはすべきではない見ることができるように - C++

int32 var1 = 81; 
double var2 = 2; 
if ((var1/10) < (var1 + var2)/10) 
{ 
    some code to execute; 
} 

限り私の理解が行くように、それを分割するときは、if文ので、残りを削除します「8を実行してください」と解決する必要があります。実行しないでください。異なる変数型を使用しているからですか?

(var1/10)と(var1 + var2)/ 10の結果を別々に印刷しようとしましたが、どちらもコンソールに8を出力しました。

+4

本当ですか? '(var1 + var2)/ 10'は' double'でなければなりません。 – LogicStuff

+0

「ダブル」について疑問をお持ちですか? –

+2

'(var1 + var2)/ 10'はdouble型であり、8.3と評価する必要があります。 – Unimportant

答えて

8

私は異なる変数タイプを使用しているのですか?

はいそれは正しい:

var1/10は(整数除算)

(var1 + var2)/108.3(浮動小数点除算、var1は浮動小数点に昇格されている)である8あります。

ifの評価では、8が浮動小数点に昇格されます。

8.0 < 8.3は、trueです。したがって、ifステートメントが実行されます。


それら両方コンソールに出力8。

いいえいいえ。

+0

それは、コンソールへの出力は私を投げていたが、私は疑いが起こっていたものだ。私は整数や変換などしか必要としない関数で出力していると思いますが、30分程度でテストして更新します。みんな、ありがとう!! – Nieechi

+0

うん、すべての作業、ありがとう:D – Nieechi

関連する問題