閱讀以下兩個條件後...在C語言中使用逗號分隔的運算符是多麼複雜的表達式?
What does the comma operator , do?
How does the Comma Operator work
我仍然不知道,我無法分析下面的語句,我在別人的源代碼中發現:
int i, n, val, locala = a, bestval = -INFINITY;
逗號運算符按照從左到右的順序進行評估,是嗎?如果我們用括號來表示優先順序,我認爲我們有這樣的事情:
(int i, (n, (val, (locala = a, (bestval = -INFINITY)))));
所以,也許,原來是等效於下面的?
int bestval = -INFINITY;
int locala = a;
int val;
int n;
int i;
如果是這樣,爲什麼是int
關鍵字應用於所有的變量,而不是隻有最左邊的變量i
的?
此外,最右邊的表達式返回它們的值,是嗎?因此,locala = a
可能會在分配發生後返回值locala
。這是否意味着變量i
,n
和val
都已初始化?如果是這樣,他們會初始化到什麼程度? -INFINITY
?價值a
?
這不是逗號運算符。 C中逗號的大部分用法不是逗號運算符。 – user2357112
體面的經驗法則:如果左邊的東西沒有被丟棄,它不是逗號操作符。 – user2357112
@牙籤銀蓮花沒有逗號運算符。有一個聲明列表。 –