私は12*20/100
を実行するとき、私は2
括弧を含めると[C++]演算子が誤動作しますか?ブラケットが出力に影響を与える理由
出力としてを得るが、私は
12*(20/100)
を実行するとき、私は出力
として0
を取得するだから誰もが知っているのですか?
私は12*20/100
を実行するとき、私は2
括弧を含めると[C++]演算子が誤動作しますか?ブラケットが出力に影響を与える理由
出力としてを得るが、私は
12*(20/100)
を実行するとき、私は出力
として0
を取得するだから誰もが知っているのですか?
整数部として(20/100)
が0
と評価されているためです。 (20.0/100)
を使用して0.2
を取得してください。かっこなしの場合240/100 = 2
(整数)
では、カッコはあなたの表現に関係ありません。
ただし、C++計算(特に整数演算)は数学ではありませんです。 2.4
の代わりに12*20/100
が2
であることを承知しているので、すでに理解しています。括弧設定
が(数学のように)最初に計算するかを定義するので、12*(20/100)
最初0
を与え、20/100
を計算し、次いで12*0
、0
を与えます。
私は、数学ではすべての計算がℝやあなたが気にしていたどんなドメインでも起こるわけではないという意見に同意します。この種の整数除算は、300BCE前後のユークリッドにまで遡りますが、確かに非数学的なC++の奇妙なものではありません。 – harold
**整数演算**つまり、整数/整数=整数です。大括弧はそれとは無関係です。 –