以下两个代码块是否完全相同,达到同样的事情吗?它显示了同样的事情,当我运行该程序,但我希望得到一些严谨的解释。类似于“for(i = 1; i <= 10; printf(”%d n“; i),i ++)在C中有效且无UB?
for(i=1;i<=10;i++)
{
printf("%d\n",i);
}
和
for(i=1;i<=10;printf("%d\n",i),i++);
的for
环路期望有效C语句作为参数,没有按是不是?但即使我已经在StackOverflow上验证过,像x+=4,y=x*2;
这样的语句是安全的,因为逗号作为序列在这里指出,printf("%d\n",i),i++)
作为在for
循环上面的参数传递的陈述是相同的道理?
如果是,请懒得回答,从它出现的轻微问题:
是否
comma
充当序列点涉及许多逗号一份声明中分离函数调用如下:
printf("Enter number\n"),scanf("%d",&number),printf("You entered %d",number);
是的,但你为什么要写这样的代码? (逗号是顺序点,只要它不是函数调用中的逗号)。 – nhahtdh 2013-04-29 12:07:43
是的,它是好的。逗号运算符引入一个序列点。 – wildplasser 2013-04-29 12:07:43
它是C标准的一部分..让我找到参考。 – 2013-04-29 12:08:03