掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
if文の制御式は最適化の対象になるのか? (ID:56931)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>> f() && (g() > 5) && !h() && (...); >初めてみた手法です。 >処理系に依存しているわけではないのですか? ちゃんとレスを読みましょう。 匿名さんも、WIZさんも、規格で保証、言語仕様、と書いてありますよね? C++のクラスなどでoperator && などをオーバーライドしていない限り、 その処理は有効です。 逆にいえば、int char などのP.O.D.型以外はその限りではありませんが。 もっとも、C/C++言語では、可読性という観点から、この手法は(最近では)さほど見られません。 if( foo != NULL && foo.bar() ) とかいったものはとくありますが。 例えば、ある整数が偶数か奇数かを判定したいとします。 下記 is_odd1 と is_odd2 は同じ処理結果を返します。 int is_odd1(int n) { if( (n % 2) == 0 ){ return 0; }else{ return 1; } } int is_odd2(int n) { return (n >> 1) << 1 == n; } is_odd1 では、剰余演算子 % と if 文が使われています。 is_odd2 では、高速なシフト演算子 >> , << が使われその結果をそのまま返します。 ※C言語では、式の評価結果が真のとき、1、偽のとき、0 となることが 言語仕様で定められています。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.