我对IF声明有一个基本的疑问。 让我们说我希望将字符串SUN与字符数组(大小为3)匹配。
if(arr[0]!='S' || arr[1]!='U' || arr[2]!='N')
cout << "no";
else
cout<< "yes";
是否在If语句中检查了所有条件,或者在第一次不匹配时是否返回true?
如果检查了所有条件,检查顺序是否从右到左?
答案 0 :(得分:7)
根据C ++标准
1 &amp;&amp;运营商组从左到右。操作数都是 在上下文中转换为bool(第4条)。如果两者都是如此 操作数是真的,否则是假的。不像&amp;,&amp;&amp;担保 从左到右的评估:第二个操作数是否被评估 第一个操作数是假的。
和
1 ||运营商组从左到右。操作数都是 在上下文中转换为bool(第4条)。如果有的话,它返回true 它的操作数是真的,否则是假的。与|,||不同担保 从左到右的评价;而且,第二个操作数不是 评估第一个操作数的计算结果是否为真。
答案 1 :(得分:0)
它返回&#34; true&#34;在第一次不匹配。 C和C ++中的运算符&#34;短路&#34;。也就是说,OR运算符在其左侧返回true时不会评估其右侧。如果AND运算符的左侧返回false,则AND运算符不会评估其右侧。
答案 2 :(得分:0)
如果至少满足其中一个条件,您编写的if语句将执行cout << "no";
。
在这种情况下,如果输入为“GUN”,程序将检查是否:
当满足第一个条件时,程序将执行cout << "no";
。
如果if语句是:
if(arr[0]!='S' && arr[1]!='U' && arr[2]!='N')
cout << "no";
else
cout<< "yes";
要执行cout << "no";
,必须满足所有条件。
对于“GUN”,它就像是:
由于有两个NO,程序将执行cout<< "yes";
。
所以: