C 39 逗號操作符分析

2021-09-13 02:27:10 字數 1784 閱讀 4706

exp1, exp2, exp3, ..., expn

#include #include using namespace std;

void func(int i)

int main()

;

int i = 0;

int j = 0;

while( i < 5 )

func(i), // 注意這裡!

i++;

for(i=0; i<3; i++)

}(i, j) = 6; // 注意這裡!

cout << "i = " << i << endl;

cout << "j = " << j << endl;

return 0;

}

輸出:

func() : i = 0

func() : i = 1

func() : i = 2

func() : i = 3

func() : i = 425

8000

000i = 3

j = 6

int a[3][3] = ;
int a[3][3] = ;
修正:

int a[3][3] = , 

,};

class& operator , (const class& a, const class& b)

#include #include using namespace std;

class test

int value()

};test& func(test& i)

test& operator , (const test& a, const test& b)

int main()

輸出:

func() : i.value() = 1

func() : i.value() = 0

1

分析:過載後的逗號表示式中的子表示式為什麼沒有從左向右的順序執行呢?

test tt = (func(t0), func(t1));
test tt = operator , (func(t0), func(t1));
工程中不要過載逗號操作符!

#include #include using namespace std;

class test

int value()

};test& func(test& i)

int main()

輸出:

func() : i.value() = 0

func() : i.value() = 1

1

發現了什麼?

大多數情況下,賦值操作符的過載是沒有意義的。

39 逗號操作符的分析

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 9.2.0 一 逗號操作符 1 逗號操作符 可以構成逗號表示式 逗號表示式用於將多個子表示式連線為乙個表示式 逗號表示式的值為最後乙個子表示式的值 逗號表示式中的前n 1個子表示式可以沒有...

第39課 逗號操作符的分析

1.1 逗號表示式用於將多個子表示式連線為乙個表示式 1.2 逗號表示式的值為 最後乙個子表示式的值 1.3 逗號表示式的 前n 1個子表示式可以沒有返回值 1.4 逗號表示式按照 從左向右的順序 計算每個子表示式的值 exp1,exp2,exp3,expn 逗號表示式的示例 include usi...

逗號操作符

逗號操作符 可以構成逗號表示式 逗號表示式用於將多個子表示式連線為乙個表示式 逗號表示式的值為最後乙個子表示式的值 逗號表示式的前n 1個子表達 先來看乙個例子 include include using namespace std void func int i intmain int i 0 i...