while循环有两个参数吗?

2024-05-04

我的女士给了我一个问题要我解答。预测以下代码的输出。

#include <stdio.h>
int main()
{
    int i = 0, j = 0;
    printf("Output is : ");
    while (i < 5, j < 10)    // Doubt: how does while accept 2 arguments?? and how it works??
    {
        i++;
        j++;
    }
    printf("%d, %d\n", i, j);
}

我认为这是一个语法错误。但是当我尝试运行时,它给了我输出。

Output is : 10, 10

但如何呢?谁能解释一下吗?

但是如果我删除第一个 printf 语句printf("Output is : ");运行它,我的防病毒软件会向我发出警报Trojan被检测到。 但它如何变成一个Trojan?


The 逗号运算符 http://en.wikipedia.org/wiki/Comma_operator是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值。

所以就你而言,

First it will increment i and j upto 5 and discard.
Second it will iterate i and i upto 10 and provide you the result as 10, 10.

您可以使用以下代码进行确认,

while (i < 5, j < 10)    // Doubt: how does while accept 2 arguments?? and how it works??
{
    i++;
    j+ = 2;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

while循环有两个参数吗? 的相关文章

随机推荐