4 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
表達(dá)方式:
(expression1, expression2)
首先計(jì)算expression1,然后計(jì)算expression2,并為整個(gè)表達(dá)式返回expression2的值。

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
該逗號操作將評估左操作數(shù),丟棄的結(jié)果,然后計(jì)算右邊的操作數(shù),這將是這個(gè)結(jié)果。鏈接中提到的慣用法是在初始化for
循環(huán)中使用的變量時(shí),它給出了以下示例:
void rev(char *s, size_t len){ char *first; for ( first = s, s += len - 1; s >= first; --s) /*^^^^^^^^^^^^^^^^^^^^^^^*/ putchar(*s);}
否則,不會(huì)有太多偉大的用途逗號操作符,雖然它很容易被濫用來生成代碼是難以閱讀和維護(hù)。
從草案C99標(biāo)準(zhǔn)來看,語法如下:
expression: assignment-expression expression , assignment-expression
和第2段說:
逗號運(yùn)算符的左操作數(shù)被計(jì)算為void表達(dá)式; 評估后有一個(gè)序列點(diǎn)。然后評估右操作數(shù); 結(jié)果有它的類型和價(jià)值。 97)如果嘗試修改逗號運(yùn)算符的結(jié)果或在下一個(gè)序列點(diǎn)之后訪問它,則行為未定義。
腳注97說:
逗號運(yùn)算符不會(huì)產(chǎn)生左值。
這意味著您無法分配逗號運(yùn)算符的結(jié)果。
重要的是要注意逗號運(yùn)算符具有最低優(yōu)先級,因此有些情況下使用()
可以產(chǎn)生很大的不同,例如:
#include <stdio.h>int main(){ int x, y ; x = 1, 2 ; y = (3,4) ; printf( "%d %d\n", x, y ) ;}
將有以下輸出:
1 4
添加回答
舉報(bào)