以下兩個代碼塊是否完全相同,達到同樣的事情嗎?它顯示了同樣的事情,當我運行該程序,但我希望得到一些嚴謹的解釋。類似於「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