while循环有两个参数吗?

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

#include  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

逗号运算符是二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值。

所以在你的情况下,

 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; }