我有關於含有逗號(,)運算符(或多個)表達一個簡單的C代碼和大的混亂。在C中,爲什麼表達式(聲明)conatining逗號(,)操作者工作方式不同
int main(){
int i=0,j=11,c;
c=i=j,++i;
printf("c=%d i=%d\n",c,i);
c=(i=j,++i);
printf("c=%d i=%d\n",c,i);
return 0;
}
上面的代碼打印:
c=11 i=12
c=12 i=12
我的問題是:
- 什麼是逗號(,)作爲一個經營者的實際工作?
++
比,
和=
,爲什麼評價爲表達做了左逗號更優先?- 會有什麼順序如果表達式包含運營商提供不同的優先級,將它依賴於逗號(,)?
- 是它表現得像分號的替代品(;)?
我不是專家,但這個'C = 1 = j的,++ i'看起來像U.B. –
@MargaretBloom不,逗號運算符引入了一個序列點IIRC。 –
http://stackoverflow.com/questions/2087026/effect-of-using-a-comma-instead-of-a-semi-colon-in-c-and-c – Turamarth