IF语句中的多个OR或AND条件
Multiple OR or AND conditions in IF statement
我对IF语句有一个基本的怀疑。假设我想要匹配字符串SUN和一个字符数组(大小为3)。
if(arr[0]!='S' || arr[1]!='U' || arr[2]!='N')
cout << "no";
else
cout<< "yes";
If语句是否检查了所有条件,还是在第一次不匹配时返回true ?
如果检查了所有条件,检查的顺序是从右到左吗?
根据c++标准
1 The &操作符从左到右分组。操作数都是上下文转换为bool(第4条)。如果两者都是,结果为真否则操作数为真或假。不像&& &担保从左到右求值:第二个操作数不求值
和
1 ||运算符将从左到右分组。操作数都是上下文转换为bool(子句4)。如果是,则返回true其操作数的值为真,否则为假。不像|,|保证从左到右的评价;而且,第二个操作数不是
在第一次不匹配时返回"true"。C和c++中的运算符都"短路"。也就是说,当OR操作符的左侧返回true时,它的右侧不会求值。如果左侧返回false,则与运算符将不计算右侧的值。
如果至少满足一个条件,则执行cout << "no";
。
在这种情况下,如果你的输入是"GUN",程序检查是否:
- ' g ' != ' s ' -> yes
- ' u ' != ' u ' -> no
- ' n ' != ' n ' -> no
当第一个条件满足时,程序将执行cout << "no";
。
如果If语句为:
if(arr[0]!='S' && arr[1]!='U' && arr[2]!='N')
cout << "no";
else
cout<< "yes";
执行cout << "no";
必须满足所有条件。
对于"GUN",它应该是这样的:
- ' g ' != ' s ' -> yes
- ' u ' != ' u ' -> no
- ' n ' != ' n ' -> no
由于有两个NO,程序将执行cout<< "yes";
。
:
- ||只需要满足一个条件
- ,,要求满足所有条件
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么
- 为什么按位 OR 和 AND 逻辑无法按预期工作?
- 按位函数 AND、OR 和 XOR 在 C++ 中使用十六进制字符串
- 为什么下面的 while 循环与 AND 一起使用,而不是 OR
- "not"、"and"和"or"是什么样的运营商C++
- 关于正则表达式与Boost的逻辑AND和OR匹配的说明
- C++中的"and"、"or"等关键字的目的是什么?
- 按位 AND/OR 运算符正在追加
- 为什么在c++中不应重载逗号、地址、逻辑AND和逻辑OR运算符
- C++:for 循环中的多个退出条件(多个变量):AND -ed 或 OR -ed
- Web Services and C++ (or C++/CLI)
- 在c++中用布尔AND和OR代替
- AND OR Operator
- 我如何更改此示例中的语法以解析"AND ( (OR (a b c)) (NOT (d)))
- 未定义关键字"and"、"or"和"not"
- IF语句中的多个OR或AND条件
- Send() and recv() double or int
- 有没有像"std::and"或"std::or"的东西?
- 如何在C++中实现AND和OR运算