我不明白for循环和if条件中检查的条件有什么区别。两者的行为方式不同吗?当我写:
for
if
int num = 10; for(int i = 0; i < 15 && num; i++){ cout << i << " "; }
它只检查是否为i < 15,而不检查是否为i < num,并从0到14一直打印。但同时,如果我写一个if条件:
i < 15
i < num
if(x < 15 && num)
它会同时检查x < 15和x < num。
x < 15
x < num
qc6wkl3g1#
&& num并不像你想象的那样,如果你期望它的意思是“现在执行前面的操作,用num替换(whatever),然后再做一次”,那么不,它离那个很远。它检查x〈15和x你错了,它不会这样做。测试num == 12, x == 13来说服你自己。如果你想同时检查x < 15和x < num,就这样说:
&& num
num
num == 12, x == 13
if (x < 15 and x < num)
或者可以使用&&
&&
if (x < 15 && x < num)
(&&和and是完全相同的两个拼写)。
and
jmo0nnb32#
循环的条件(无论是for循环、while循环还是do..while循环)和if的条件都是布尔上下文,因此工作方式完全相同。您的两个Assert都是错误的,因为在您的示例中,编译器从不检查i < num或x < num,这不是&&的工作方式。在for(int i = 0; i < 15 && num; i++)中,条件被解析为(i < 15) && (num != 0),在您的示例中实际上是(i < 15) && true,或者简单地是(i < 15)。如果您想检查(i < num),则需要这样编写代码:
while
do..while
for(int i = 0; i < 15 && num; i++)
(i < 15) && (num != 0)
(i < 15) && true
(i < 15)
(i < num)
for(int i = 0; i < 15 && i < num; i++)
或者:
for(int i = 0; i < min(15,num); i++)
在if(x < 15 && num)中,条件被解析为(x < 15) && (num != 0),在您的示例中实际上是(x < 15) && true,或者简单地是(x < 15)。如果您想检查(x < num),则需要这样编写代码:
(x < 15) && (num != 0)
(x < 15) && true
(x < 15)
(x < num)
if(x < 15 && x < num)
if(x < min(15,num))
2条答案
按热度按时间qc6wkl3g1#
&& num
并不像你想象的那样,如果你期望它的意思是“现在执行前面的操作,用num
替换(whatever),然后再做一次”,那么不,它离那个很远。它检查x〈15和x
你错了,它不会这样做。测试
num == 12, x == 13
来说服你自己。如果你想同时检查x < 15
和x < num
,就这样说:或者可以使用
&&
(
&&
和and
是完全相同的两个拼写)。jmo0nnb32#
循环的条件(无论是
for
循环、while
循环还是do..while
循环)和if
的条件都是布尔上下文,因此工作方式完全相同。您的两个Assert都是错误的,因为在您的示例中,编译器从不检查
i < num
或x < num
,这不是&&
的工作方式。在
for(int i = 0; i < 15 && num; i++)
中,条件被解析为(i < 15) && (num != 0)
,在您的示例中实际上是(i < 15) && true
,或者简单地是(i < 15)
。如果您想检查(i < num)
,则需要这样编写代码:或者:
在
if(x < 15 && num)
中,条件被解析为(x < 15) && (num != 0)
,在您的示例中实际上是(x < 15) && true
,或者简单地是(x < 15)
。如果您想检查(x < num)
,则需要这样编写代码:或者: