Loading article…
プログラミングにおいて、ゴッチャとは、システム、プログラム、またはプログラミング言語における有効な構成要素であり、文書化されたとおりに動作しますが、直感に反し、簡単に呼び出され、その結果が予期しないまたは不合理であるため、間違いを招きやすいものです。[1]
例
if ( a = b )コード;
これは文法的には正しい。 の値を に代入しb、aがゼロでなければ実行するcode。aこれは意図された動作であることもある。しかし、最もよくあるのはタイプミスである。プログラマーはおそらく次のように意図したのだろう。
if ( a == b )コード;
これは、とが等しいcode場合に実行されます。[1]最近のコンパイラは通常、前者の構造(比較ではなく代入による条件分岐)に遭遇すると、コンパイラオプション(gccのオプションなど)に応じて警告を生成します。この落とし穴を回避するために、一部のプログラミング言語では、 Python の「walrus」演算子( )など、これが望ましい動作である場合の特定の構文が含まれています。この特定の構文が存在しない言語では、定数を比較の左側に保持することが推奨されています(たとえば、ではなく)。このように、の代わりにを使用すると、コンパイラエラーが発生します(Yoda条件を参照)。ただし、多くの種類の落とし穴はコンパイラによって検出されません。[要出典]ab-Wall:=42 == xx == 42===
参照
参考文献
- ^ ab The Jargon File の Gotcha の定義
- ^ 「VOID EXP21-C. 等価比較の左側に定数を配置する」
さらに読む
- Stephen C. Dewhurst (2003)。C ++ Gotchas (コーディングと設計における一般的な問題の回避)。Addison- Wesley。ISBN 0321125185。
外部リンク
- C 罠と落とし穴 アンドリュー・ケーニッヒ著
- C++ Gotchas 最も一般的で破壊的で興味深い C++ 設計およびプログラミング エラー 99 個を回避および修正するためのプログラマー ガイド、Stephen C. Dewhurst 著
