C/C++ でエスケープする必要がある 4 つの特殊な非アルファベット文字があります: 一\'
重引用符、二重引用符\"
、バックスラッシュ\\
、および疑問符\?
です。特別な意味があるかららしい。'
single char
、"
文字列リテラル、\
エスケープ シーケンスの場合、なぜ?
それらの 1 つなのですか?
今日、教科書のエスケープ シーケンスの表を読みましたが、これまで一度もエスケープし?
たことがなく、問題に遭遇したこともないことに気付きました。念のため、GCCでテストしました:
#include <stdio.h>
int main(void)
{
printf("question mark ? and escaped \?\n");
return 0;
}
そして C++ バージョン:
#include <iostream>
int main(void)
{
std::cout << "question mark ? and escaped \?" << std::endl;
return 0;
}
両方のプログラムの出力: question mark ? and escaped ?
だから私は2つの質問があります:
\?
エスケープ シーケンス文字の 1 つがなぜですか?- 非エスケープが
?
うまく機能するのはなぜですか? 警告すらない。
さらに興味深い事実は、エスケープが他のいくつかの言語\?
と同じように使用できることです。?
私は Lua/Ruby でテストしましたが、文書化されていませんでしたが、これも真実です。