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