我想知道是否有更短的写作方式
if (test != 'e' || test != 'd')
我想把它写成
if (test != ('e' || 'd'))
或类似的东西,所以我不必重复“test!=”
由于
答案 0 :(得分:2)
这就是语言的语法。你可以做的事情并不多......如果你不喜欢它的外观,你可以创建一个包含测试的布尔函数,然后调用该函数:
bool isEOrD(char test)
{
return (test != 'e' || test != 'd')
}
...
if (isEOrD(test))
编辑:还有其他方法来编写此代码(请参阅此答案的评论),但您原来的方法可能是最干净的方法。
答案 1 :(得分:1)
你可以使用旧的C函数strchr
:
if (!strchr("de", test))
{
// test is not 'd' or 'e'
}
但是我不知道看看是否更好......我个人可能只有两个!=
。
答案 2 :(得分:0)
C或C ++必须评估您在语言语法中编写的表达式。表达式('e'或'd')总是返回true,因为'or-ing'是通过比较永远不会相同的值的位来完成的。编译器如何知道你想要什么,因为在C / C ++中,原始字符只是对整数的解释。这就是你可以合法写作的原因:
char aChar = 'a';
// or
char aChar = 0x41; // hex 41 = ascii 'a'
让他们都工作。