C++ 什么';这个if/else/else-if语句有什么错? intmain(){ 无符号整数fstNumb=0,sndNumb=0; cout>fstNumb; cout>sndNumb; cout>选项;cout
简短回答:您的逻辑不正确。C++ 什么';这个if/else/else-if语句有什么错? intmain(){ 无符号整数fstNumb=0,sndNumb=0; cout>fstNumb; cout>sndNumb; cout>选项;cout,c++,if-statement,C++,If Statement,简短回答:您的逻辑不正确。如果(fstNumb | | sndNumb==0)与如果((fstNumb!=0)| | |(sndNumb==0))相同,但您需要如果(fstNumb==0 | sndNumb==0)。将其更改为后者,它将按预期工作 解释为什么“不能用0除:/”即使fstNumb和sndNumb都不是0: 如果fstNumb为非零,则当作为布尔值处理时,它的计算结果为true(零为false;其他所有值均为true)。|的优先级低于=,因此整个表达式的计算结果为fstNumb |(
如果(fstNumb | | sndNumb==0)
与如果((fstNumb!=0)| | |(sndNumb==0))
相同,但您需要如果(fstNumb==0 | sndNumb==0)
。将其更改为后者,它将按预期工作
解释为什么“不能用0除:/”
即使fstNumb
和sndNumb
都不是0
:
如果fstNumb
为非零,则当作为布尔值处理时,它的计算结果为true(零为false;其他所有值均为true)。|
的优先级低于=
,因此整个表达式的计算结果为fstNumb |(sndNumb==0)
。当fstNumb!=0
时,该表达式与true相同(sndNumb==0)
,这总是正确的。if(fstNumb | | sndNumb==0)
与if(fstNumb==0 | | sndNumb==0)不是一回事。
与
if (fstNumb || sndNumb == 0)
将此部分更改为(如果您不希望答案为0)
但是如果得到0作为答案没有问题
if (fstNumb == 0 || sndNumb == 0)
将条件if(fstNumb | | sndNumb==0)
更改为if(sndNumb==0)
因为第一个数字可以是
0
if ( sndNumb == 0)
if (fstNumb == 0 || sndNumb == 0)
if ( sndNumb == 0)
Input : 0 12
Answer : 0