0

C プログラミング言語に関して、エスケープ シーケンスの記述は、Visual Studio 2008 で次の行の出力を解決しません。

char * str = "??/abc";
printf( "%s", str );

「bc」のみを出力します。
str が指すメモリを確認すると、次のように"??/a"機能していることがわかります。"\a"

"??/"Google で検索しても、バックスラッシュとして扱われることに関連するものは見つかりません。

4

1 に答える 1

1

AProgrammer のコメントを拡張するために、C は、キーボードに特定の文字が欠落している人々のために一連のトリグラフを定義します。これらは「??」で始まり、その後に別の文字が続きます。特に、'??/' は '\' のトライグラフです。

この変換はコンパイル プロセスの非常に早い段階で行われるため、コンパイラは単に '\a' を認識します。

MSDNを参照

于 2015-02-26T15:32:39.813 に答える