Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 循环不工作的基本多个条件_C_Loops_For Loop_Expression - Fatal编程技术网

C 循环不工作的基本多个条件

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(

我目前正在学习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 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++)在你的答案中。但不是很明显,这就是为什么我允许自己要求你添加一些解释