这是我用 QtCreator 制作的一个非常简单的 C++ 应用程序:
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
if (a < 1 or b > 3)
{
return 1;
}
return 0;
}
对我来说,这不是有效的 C++,因为关键字or不是保留关键字。
但如果我编译并运行它,它工作正常,没有任何警告!退出代码为 0,如果我更改 b = 4,则退出代码为 1!
我没有包含任何内容来确保没有隐藏的定义。
这对我来说真的很奇怪。这是 Qt 定义的东西吗?我在文档中没有找到任何与此相关的内容。
根据维基百科 http://en.wikipedia.org/wiki/C%2B%2B_operators#C.2B.2B_operator_synonyms:
C++ 定义关键字作为别名
对于许多功能的符号
作为运算符:and (&&)、bitand (&)、
and_eq (&=)、or (||)、bitor (|)、or_eq
(|=)、异或 (^)、xor_eq (^=)、非 (!)、
not_eq (!=)、compl (~)。
As MadKeithV 指出 https://stackoverflow.com/questions/1433345/or-is-not-valid-c-why-does-this-code-compile/1433393#1433393,这些替换来自 C 的 iso646.h,并作为运算符关键字包含在 ISO C++ 中。 iso646.h 的维基百科文章表示,这些关键字的原因确实是针对国际键盘和其他非 QWERTY 键盘,这些键盘可能无法轻松访问这些符号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)