下記のprint文を実行させると文字化けして表示されます。

#include <stdio.h>

int main(int argc, char *argv[])

  printf(”バグってる??!\n”);
  return 0;



これは、トライグラフが使用されているからです。print文の中に??!という文字があり、これがトライグラフと判断されるのです。

トライグラフとは2つの?と特定の文字の3文字で1つの文字を表す表記のことです。3文字表記とも呼ばれます。

解決しにくいコンパイルエラーや不具合の元になるので、トライグラフを通常は使用しません。

トライグラフは、下記のようにコンパイルの最初の段階で1つの文字に変換されます。

??= → #
??( → [
??/ → \
??) → ]
??' → ^
??< → {
??! → |
??> → }
??- → ~