在 C/C++ 中有四个特殊的非字母字符需要转义:单引号\'、双引号\"、反斜杠\\和问号\?。这显然是因为它们具有特殊的含义。'对于 single char,"对于字符串文字,\对于转义序列,但为什么是?其中之一?
我今天读了一本教科书中的转义序列表,我意识到我以前从未逃脱?过,也从未遇到过问题。可以肯定的是,我在 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 ?
所以我有两个问题:
- 为什么是
\?转义序列字符之一? - 为什么非转义
?工作正常?甚至没有警告。
更有趣的事实是转义符\?也可以像?在其他一些语言中一样使用。我在 Lua/Ruby 中进行了测试,即使我没有找到文档记录也是如此。