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;
这样的语句是安全的,因为逗号在这里作为序列点,对于在for
循环中传递的printf("%d\n",i),i++)
语句也是同样的道理吗?如果是的话,请回答一下以下问题:
当一个语句涉及到多个逗号分隔的函数调用时,
逗号
是否会起到序列点的作用,如下所示: printf("Enter number\n"),scanf("%d",&number),printf("You entered %d",number);
int a,b,*ptr,printf("Hello"),printf("Howdy");
这样的代码吗?那这个编译器是哪个呢?编译器可能会因为各种原因(动态 UB 无法在编译时检测到、语言扩展等)而接受一些错误的程序,但是如果一个构造不被你的编译器所接受,你就不应该浪费时间来询问它。 - Pascal Cuoq