[解決済み] C言語では「?」演算子は何をするのですか?
2022-03-14 18:31:30
質問
次のようなCの行を見た。
!ErrorHasOccured() ??!??! HandleError();
正しくコンパイルされ、問題なく実行されているようです。エラーが発生したかどうかをチェックして、エラーが発生した場合はそれを処理しているようです。しかし、実際に何をしているのか、どのように処理しているのかはよくわからない。プログラマーがエラーに対する気持ちを表現しているように見えますが。
を見たことがありません。
??!??!
どのプログラミング言語でも見たことがないし、ドキュメントもどこにもない。(Googleでは、次のような検索語は役に立ちません。
??!??!
). また、そのコードサンプルはどのように動作するのでしょうか?
どのように解決するのですか?
??!
は
トリグラフ
に変換されます。
|
. と書いてあるわけです。
!ErrorHasOccured() || HandleError();
となり、ショートするため、等価となります。
if (ErrorHasOccured())
HandleError();
今週の達人 (C++を扱ったものですが、ここにも関係あります)で取り上げました。
トリグラフの起源と思われるもの あるいは、@DwBがコメントで指摘しているように、EBCDICが難しかったためである可能性が高いです(またしても)。 これは IBM developerworksの掲示板での議論は、その説を支持しているようです。
ISO/IEC 9899:1999 §5.2.1.1, 脚注12より (h/t ランダム832 ):
<ブロッククオートトリグラフ・シーケンスにより、インバリアント・コードセットで定義されていない文字を入力することができます。 ISO/IEC 646に記載されている、7ビットのUS ASCIIコードセットのサブセットである。
関連
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] JavaScriptに「NULL合体」演算子はありますか?
-
[解決済み] C言語でオブジェクト指向のコードを書くとしたら、どのようにすればよいのでしょうか?[クローズド]
-
[解決済み] C言語でファイルサイズを取得するには?[重複]する
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
構造体の配列--[エラー] '['トークンの前に一次式があることが予想される
-
Cエラー [エラー] 代入_Ashesの左オペランドにlvalueが必要です-プログラマーズ・シークレット
-
C: 1を求める! + 2! + 3! + ... + n! (ループ)
-
警告:符号付き整数式と符号なし整数式の比較 [-Wsign-compare]
-
警告: 'struct XXX' はパラメータリストの内部で宣言されています。
-
[解決済み] MIPSのネストされたForループと配列の使用
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] mallocとcallocの違い?
-
[解決済み] longをフォーマットするprintfの引数は何ですか?
-
[解決済み] C言語でファイルサイズを取得するには?[重複]する