ホームページ > バックエンド開発 > C++ > ユーザー定義型の短絡評価は C で保証されていますか?

ユーザー定義型の短絡評価は C で保証されていますか?

Barbara Streisand
リリース: 2024-11-10 17:40:04
オリジナル
896 人が閲覧しました

Is Short-Circuit Evaluation Guaranteed in C   for User-Defined Types?

C での短絡評価: 注意事項

Java では、短絡評価により、論理演算子の正しいオペランドが次のとおりであることが保証されます。左のオペランドが true と評価された場合にのみ実行されます。この動作により、不必要な計算を回避して効率的なコード実行が可能になります。

次に、C での同様のシナリオを考えてみましょう。

if (a != 0 && a->fun());
ログイン後にコピー

このコードは Java で必要な動作をエミュレートしますが、次の点に注意することが重要です。ユーザー定義型の短絡評価は C では保証されていません。これは、a が null の場合でも a->fun() 呼び出しが実行され、未定義の動作が発生する可能性があることを意味します。

この矛盾の背後にある理由は、論理演算子 && および || のオーバーロードされた性質にあります。 C で。これらの演算子をユーザー定義型に適用すると、プログラマがカスタマイズでき、短絡評価のデフォルト動作をオーバーライドできる可能性があります。

したがって、移植性を確保し、予測できない結果を避けるために、使用しないことを強くお勧めします。 && と || をオーバーロードします。カスタムタイプの演算子。ただし、int や bool などの組み込み型の場合は、短絡評価が保証されているため、Java と同じようにこの強力な最適化手法を C で利用できます。

以上がユーザー定義型の短絡評価は C で保証されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート