逗號運算符是做什么的?什么是,經營者用C呢?
4 回答

慕仙森
TA貢獻1827條經驗 獲得超8個贊
表達方式:
(expression1, expression2)
首先計算expression1,然后計算expression2,并為整個表達式返回expression2的值。

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