C 循环不工作的基本多个条件
我目前正在学习C语言,我面临着一个我无法解决的问题。 这真的很简单,我想打印1到20之间的数字,但前提是它们是偶数(这意味着输出将是2,4,6,…)。我知道如何做到这一点,但问题是我想用一种方式,在for循环中加入两个条件:C 循环不工作的基本多个条件,c,loops,for-loop,expression,C,Loops,For Loop,Expression,我目前正在学习C语言,我面临着一个我无法解决的问题。 这真的很简单,我想打印1到20之间的数字,但前提是它们是偶数(这意味着输出将是2,4,6,…)。我知道如何做到这一点,但问题是我想用一种方式,在for循环中加入两个条件: int main() { for (int i = 1; i<=20 && i%2 == 0 ; i++) { printf("%d\n", i); } return 0; } int main(
int main() {
for (int i = 1; i<=20 && i%2 == 0 ; i++) {
printf("%d\n", i);
}
return 0;
}
int main(){
对于(int i=1;i条件失败时,循环立即停止。由于i%2==0
对于i=1
失败,循环立即停止
您需要将偶数检查放在循环中,而不是放在for
条件中
int main() {
for (int i = 1; i<=20; i++) {
if (i % 2 == 0) {
printf("%d\n", i);
}
}
return 0;
}
int main(){
对于(int i=1;i条件失败时,循环立即停止。由于i%2==0
对于i=1
失败,循环立即停止
您需要将偶数检查放在循环中,而不是放在for
条件中
int main() {
for (int i = 1; i<=20; i++) {
if (i % 2 == 0) {
printf("%d\n", i);
}
}
return 0;
}
int main(){
对于(int i=1;i这两个条件都会被评估-这就是为什么循环永远不会运行的原因。当for
启动时,它将i
设置为1,并立即执行循环终止检查:1两个条件都会被评估-这就是为什么循环永远不会运行的原因。当for
启动时,它将i
设置为1,并立即执行循环终止检查:1对第二个条件进行求值。这是因为对其求值,循环不会迭代
i
的初始值等于1。因此子表达式i%2==0
的计算结果为false
可以在循环中使用if语句,如
for (int i = 1; i<=20; i++) {
if ( i % 2 == 0 ) printf("%d\n", i);
}
程序输出为
2
4
6
8
10
12
14
16
18
20
对第二个条件进行求值。这是因为对其求值时循环不会迭代
i
的初始值等于1。因此子表达式i%2==0
的计算结果为false
可以在循环中使用if语句,如
for (int i = 1; i<=20; i++) {
if ( i % 2 == 0 ) printf("%d\n", i);
}
程序输出为
2
4
6
8
10
12
14
16
18
20
当i
为1时,i%2
的值是多少?
循环的值在条件(两个;
表达式的中间)计算为零时停止。它们不会跳过迭代-它们会停止。或者在这种情况下,永远不会运行。循环条件表示“满条件为真时循环”。如果i%2==0
为false,则循环将结束。您需要在循环内添加一个检查(If
)。您可以使用for(int i=2;i当i
为1时,i%2
的值是多少?for
循环在条件(两个;
中间)时停止)表达式的计算结果为零。它们不会跳过迭代-它们会停止。或者在这种情况下,永远不会运行。循环条件表示“满条件为真时循环”。如果i%2==0
为假,则循环将结束。您需要在循环内添加一个检查(If
)。您可以使用避免对偶数的整个检查(int i=2;我喜欢你的解决方案,即使有些程序员会抱怨根本不推荐。你能补充一些解释吗?例如,为什么你使用++i
而不是i++
。我知道原因(@Stef1611我很抱歉。使用了++I将已经递增的值与20进行比较。确定吗?与i@Stef1611前面的注释是错误的。我认为在条件中使用了运算符&),但在原始问题中使用了此运算符。我发现使用(I%2==0?I:++I)而不是(i%2==0?i:i++)在你的答案中。但不是很明显,这就是为什么我允许自己要求你添加一些解释,就像你的解决方案一样,即使有些程序员会抱怨根本不推荐。你能添加一些解释吗?例如,为什么你使用++i
而不是i++
。我知道原因(@Stef1611我很抱歉。使用了++I将已经递增的值与20进行比较。确定吗?与i@Stef1611前面的注释是错误的。我认为在条件中使用了运算符&),但在原始问题中使用了此运算符。我发现使用(I%2==0?I:++I)而不是(i%2==0?i:i++)在你的答案中。但不是很明显,这就是为什么我允许自己要求你添加一些解释