我有这个代码:
int i = 0, j = 0;
for(i=0,j=0;i<5,j<25;i++,j++);
cout<<i <<" "<<j;
而且我不知道它为什么输出25 25
。我真的不明白为什么它在i
and中获得 25 的值j
。谁能解释一下为什么它从第二个条件达到 25 值?这是在一个 for 循环中检查两个条件的问题吗?
我有这个代码:
int i = 0, j = 0;
for(i=0,j=0;i<5,j<25;i++,j++);
cout<<i <<" "<<j;
而且我不知道它为什么输出25 25
。我真的不明白为什么它在i
and中获得 25 的值j
。谁能解释一下为什么它从第二个条件达到 25 值?这是在一个 for 循环中检查两个条件的问题吗?
这是逗号运算符的效果。这意味着它忽略测试的第一个参数并返回测试结果的第二个参数。
;
由于您在循环末尾有分号 ( )
for(i=0,j=0;i<5,j<25;i++,j++);
^
您的 for 循环一直“静默”执行(仅考虑j<25
条件),完成后,两个变量的值都是25
.
如果您想在循环执行时查看输出以验证这一点,请;
从for
语句末尾删除 。
如果您想根据两者的值终止循环,i < 5
并且j < 25
您可能想使用&&
(and) 运算符。
这是因为逗号运算符在 c 中的工作方式。
i = (a,b);
这将分配b
给i
. 在您的情况下i<5,j<25
j<25
,它被用作检查,并且值i
对循环没有影响。
我希望你想要实现的是:
i<5&&j<25
如果您期望输出为5,5
.
如果要打印每次迭代的输出,请删除 for 末尾的分号。
,
运算符是一个忽略第一个参数并返回第二个参数的运算符。因此只有第二个条件适用。你需要的是&&
.
如果您的意思是循环应该运行直到i < 5
并且j < 25
为真。这是使用&&
运算符的代码。
int i = 0, j = 0;
for(i=0,j=0; i<5 && j < 25; i++,j++);
cout<<i <<" "<<j;
这里 i 和 j 都是 5。
如果使用 OR( ||
) 运算符,其中 i 和 j 都将是 25,因为两者都在 for 循环中递增,直到两个条件都变为 false。
如果您希望 i 为 5 而 j 为 25,最好编写两个循环或通过以下代码。
int i = 0, j = 0;
for(i=0,j=0; j < 25; j++)
{
if( i < 5 )
{
i++;
}
}
cout<<i <<" "<<j;