1

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

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

我想像这样写

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

或类似的东西,所以我不必重复“测试!=”

谢谢

4

3 回答 3

2

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

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

...

if (isEOrD(test)) 

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

于 2012-04-30T01:29:25.447 回答
1

可以使用旧的 C 函数strchr

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

但我不知道这是否更好看……就我个人而言,我可能只有两个!=

于 2012-04-30T01:32:12.293 回答
0

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

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

并让他们都工作。

于 2012-04-30T03:41:58.480 回答