这是我用QtCreator创建的一个非常简单的C++应用程序:
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
if (a < 1 or b > 3)
{
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对我来说,这不是有效的C++,因为关键字或不是保留关键字.
但是如果我编译并运行它,它没有任何警告就可以正常工作!退出代码为0,如果我改变b = 4,则退出代码为1!
我没有包括任何东西,以确保没有隐藏的定义.
这对我来说真的很奇怪.这是Qt定义的东西吗?我在文档中没有找到任何相关内容.
Tho*_*ens 54
根据维基百科:
C++将关键字定义为充当运算符的多个符号的别名:和(&&),bitand(&),和_eq(&=),或(||),bitor(|),or_eq(| =), xor(^),xor_eq(^ =),not(!),not_eq(!=),compl(〜).
正如MadKeithV指出的那样,这些替换来自C的iso646.h,并作为运算符关键字包含在ISO C++中.针对iso646.h的维基百科文章说,这些关键字的原因确实适用于可能无法轻松访问这些符号的国际和其他非QWERTY键盘.
jal*_*alf 16
or是一个C++关键字,您可以使用它而不是||.没有魔力.
对于and大多数其他逻辑运算符也是如此.通常最好坚持使用众所周知的名字,以避免这样的混乱.如果你使用or,有人会想知道"为什么这个编译";)