【发布时间】:2013-07-14 10:51:30
【问题描述】:
以下代码运行时没有给出任何错误或警告
#include<stdio.h>
int main(){
int i, j;
int p = 0, q = 2;
for(i = 0, j = 0; i < p, j < q; i++, j++){
printf("HelloWorld\n");
}
return 0;
}
但是,Let Us C(Yashwant Kanetkar) 一书说在 for 循环的测试表达式中只允许使用一个表达式。(参见本书的第 115 页)。
我不确定标准。 for循环的测试表达式中是否允许多个表达式?
编辑:我当然可以加入这两个表达式,但是当我在 website 上找到上面的代码时,我傻眼了。我的问题是,这是否是有效的 C 代码?
【问题讨论】:
-
是的,我当然可以,但是当我在网站上找到上面的代码时我傻眼了:geeksforgeeks.org/output-of-c-program-set-22
-
C 标准不同,例如C89 和 C99。除此之外,C 语言编译器的不同实现也存在差异。你的代码是正确的。
-
这段代码是正确的——
comma运算符计算其操作数,其结果是最后一个操作数。例如int a = 1,2; //here a = 2 -
建议大家不要看Let Us C,看看这个The Definitive C Book Guide and List
-
@NikunjBanka 你没有理由对你找到的代码 sn-p 感到目瞪口呆,也没有理由在这里发布。您所要做的就是费心阅读该页面上的代码......特别是代码描述如下:当两个表达式用逗号分隔时,首先执行第一个表达式(i