三項演算子を使った時と if文を使った時の違い

            int a = 10, b =20, c =30;

            c = a > b ? a - b : b - a;

            int a = 10, b =20, c =30;

            if (a > b) c = a - b; else b - a;

がコンパイルされた後どう違うか調べてみたよ

ab
結果。
代入過程については全く同じことが分かります。
しかし、どちらの処理も、関数の最終的な評価値が (int*)(ebp - 0x4c)に代入されるのですが、
三項演算子を使った方は cに代入される演算結果が、
if を使った方は、if文の中の 真偽判定の結果が代入されるという違いがあることが分かります。
演算結果の評価をそのままプログラムで使う事はあまりないですが、インラインアセンブラ等をかませるときは、影響を考慮することがあります (・ω・)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です