gpt4 book ai didi

c++ - 在 c++ 中,c 为什么 for 循环 block 内的条件和 for 循环内的条件行为不同?

转载 作者:太空宇宙 更新时间:2023-11-04 13:06:16 25 4
gpt4 key购买 nike

for 循环内的条件和 for 循环 block 内的相同条件。为什么这 2 个给出不同的输出?

for (i=0;i <5;i++)
{
printf("\n");
for (j=0;j <5;j++)
if (i!=j)
printf (" i= %d j= %d ",i,j);
}


for (i=0;i <5;i++)
{
printf("\n");
for (j=0;j <5 &&i!=j;j++)
printf (" i= %d j= %d ",i,j);
}

`

最佳答案

它们产生不同的输出,因为内部循环绝不是等价的。

测试 i != j 不会影响第一种形式中内循环的迭代次数 - 迭代次数将始终为 5,并且if (i != j) ... 将在每次循环迭代时执行。

然而,在第二批代码中,i != j 现在是循环条件的一部分,因此循环将在五次迭代后或第一次找到 i != j 时终止。 = j 为假(即如果 i == j)。

如果 i 为零,请考虑两批代码中会发生什么。

在第一批代码中,内循环总是迭代五次,并为 j != i 的所有值生成输出。对于等于零的 i,这意味着产生四行输出(对于 j,每个值为 1234 但不是 0)。

在第二批代码中,i 为零,i != jj 的第一个值上将为 false (零)因此永远不会执行内部循环体 - 并且不会为 j 的后续值执行循环体。不会产生任何输出。

关于c++ - 在 c++ 中,c 为什么 for 循环 block 内的条件和 for 循环内的条件行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42184375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com