布尔逻辑问题

Boolean logic issue

本文关键字:问题 布尔逻      更新时间:2023-10-16

我想知道是否有更短的写作方式

if (test != 'e' || test != 'd')

我想这样写

if (test != ('e' || 'd'))

或类似的东西,所以我不必重复"test !="

谢谢

这是语言的语法。你对此无能为力...如果你不喜欢它的外观,你可以创建一个包含测试的布尔函数,然后调用该函数:

bool isEOrD(char test)
{
    return (test != 'e' || test != 'd')
}
...
if (isEOrD(test)) 

编辑:还有其他方法可以编写此代码(请参阅此答案的注释),但您的原始方法可能是最干净的方法。

您可以使用旧的 C 函数strchr

if (!strchr("de", test))
{
    // test is not 'd' or 'e'
}

但我不知道它是否更好看......就我个人而言,我可能会把两个!=

C 或 C++ 必须计算您用语言语法编写的表达式。 表达式("e"或"d")始终返回 true,因为"or-ing"是通过比较永远不会相同的值位来完成的。 编译器如何知道你想要什么,因为在 C/C++ 中,原始字符只是对整数的解释。 这就是为什么你可以合法地写:

char aChar = 'a';
// or
char aChar = 0x41; // hex 41 = ascii 'a'

并让他们都工作。