布尔逻辑问题
Boolean logic issue
我想知道是否有更短的写作方式
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'
并让他们都工作。
相关文章:
- 一个关于在C++中重载布尔运算符的问题
- 当我尝试通过 arduino 上的引用传递布尔数组时出现问题
- 存储另一个函数返回的布尔数组时遇到问题
- 在C++中做一个场景问题,我不确定如何处理布尔和if循环
- 我在使用相等性测试布尔运算符时遇到问题
- 在 Rcpp-Function 中使用布尔向量的子集(Rcpp 初学者的问题..)
- 我的作业问题:布尔表达式
- 使用 true 初始化布尔数组时出现问题
- 递归布尔函数的问题
- 使用动态布尔数组时出现问题
- 我在使用布尔函数时遇到问题,其中用户输入两个字母并输出字母表中最高的字母
- CMAKE编译器布尔开关问题
- 关于如何在 cout 中处理布尔值的考试问题
- 在结束取决于布尔值的 do/while 循环时遇到问题 - C++
- 布尔构造函数问题的动态数组
- 布尔运算符问题
- 布尔逻辑问题
- 用于防止重复和语法错误问题的布尔数组
- 布尔和if语句的问题
- 布尔和Void问题