C++ for循环中的多个条件在c++;

C++ for循环中的多个条件在c++;,c++,C++,我正在尝试打印所有出现的偶数,最大为20。代码在if条件下运行良好,但在循环中不能处理多个条件 #include<iostream> using namespace std; int main() { for(int i = 1; ((i <= 20) && (i % 2 == 0)); i ++) cout << i << endl; } #包括 使用名称空间std; int main(){ 对于(inti=

我正在尝试打印所有出现的偶数,最大为20。代码在if条件下运行良好,但在循环中不能处理多个条件

#include<iostream>
using namespace std;
int main() {
    for(int i = 1; ((i <= 20) && (i % 2 == 0)); i ++) 
        cout << i << endl;
}
#包括
使用名称空间std;
int main(){

对于(inti=1;((i您混淆了两件不同的事情,一件是希望循环停止,另一件是希望打印一个数字

在您编写的代码中,您已经设置了“当您想要打印一个数字时”的条件,其中您应该只设置“当您想要循环停止时”的条件。因此,一旦您得到一个奇数,您的循环就会停止

你的代码应该是

for (int i = 1; i <= 20; i ++) 
    if (i % 2 == 0)
       cout << i << endl;

用于(int i=1;i
1%2
不等于0,因此您的循环条件在第一次迭代时为false它工作正常。在第一次迭代中,未满足第二个条件,将永远不会输入循环。对于工作,直到您的条件为true,但当i=1时,您的条件为false,因此您从for出发。请上车为了养成在单行程序中调查bug的习惯,您可以很容易地在这些条件下进行实验,编写一个循环,输出
(i%2)的内容
is等。或者附加一个调试器并逐步完成循环。如果您养成了在编程过程中发生远程意外事件时随时在线发布问题的习惯,您的增长将非常有限。将循环和打印条件分开。或者您可以使用(int i=2;i@super为什么应该是?OP的循环从
1
,而不是
0
。我不认为有必要在这里更改OP的要求。@super我从来没有给0赋值,因为最小值是1,所以你为什么要这么说?@super“…从零开始最多20个“我在这里看不到任何”提到。如果我们阅读代码,很明显OP希望从1开始。此外,用0替换开始值1不会改变此答案的有效性。因此您的评论有点不相关:)如果你不想考虑OP i的初始化,那么从20开始也可以从-无穷或使用<代码> INT/code > > OpthMII/code >,为什么我说的是0?我不能理解你的想法……超自然唯一的自然的事情是从OP代码与<代码> int i=1 < /代码>一起工作。