我想知道是否有写布尔逻辑问题
if (test != 'e' || test != 'd')
我想把它写这样
if (test != ('e' || 'd'))
或者这样的事情,所以我不必重复“更短的方式test!=“
谢谢
我想知道是否有写布尔逻辑问题
if (test != 'e' || test != 'd')
我想把它写这样
if (test != ('e' || 'd'))
或者这样的事情,所以我不必重复“更短的方式test!=“
谢谢
这就是语言的语法。这里没有什么可以做这件事......如果你不喜欢它的样子,你可以创建包含测试,然后只需调用该函数将布尔函数:
bool isEOrD(char test)
{
return (test != 'e' || test != 'd')
}
...
if (isEOrD(test))
编辑:还有其他的方法来编写这段代码(请参阅这个答案的评论),但你原来的方式可能是最干净的方法。
C或C++必须评估你的语言的语法编写的表达式。表达式('e'或'd')总是返回true,因为'or-ing'是通过比较永远不会相同的值的位来完成的。编译器如何知道你想要什么,因为在C/C++中,原始字符只是一个整数的解释。这就是为什么你可以合法地写:
char aChar = 'a';
// or
char aChar = 0x41; // hex 41 = ascii 'a'
并让他们都工作。
有编写短得多的方式:'如果(真)'。不过,你可能想看看*摩根法则*。如果你想知道,如果测试是'D',它不会是'e',如果它是'e',它不会是'D'。因此你的状况永远是真的。您可能需要'&&',而不是'||'。 – chris