2015-04-21 24 views
-4
int a, b, i=10, j=20; 
a = (i,j); 
b = i,j ;` 

當我編譯在linux上述 程序(克++)我在行號2得到警告:警告:逗號的左邊的操作數在克無影響++編譯器

左手逗號的操作數沒有任何影響)

和行號3

(逗號的右邊的操作數具有沒有效果)。

我不明白什麼是錯的。

+0

你期望''a''有什麼價值? ''我''還是''j''?或兩者? ;) – BitTickler

+0

我想同時打印 – user2787274

+0

@ user2787274 *「我想同時打印」* - 好,'std :: cout << i <<''<< j <<'\ n';',或者如果您想要將兩者保存在一個變量中並稍後打印出來,可以使用['std :: pair'](http://en.cppreference.com/w/cpp/utility/pair):'#include std: :pair a {i,j}; std :: cout << a.first <<「'<< a.second <<'\ n';'。 –

回答

1

你認爲這個位有什麼用?

a = (i,j); 

它等同於:

a = j; 

編譯器只是說有使用逗號操作時,前面的條款沒有任何副作用(即評估i沒有「做」任何事情)是沒有意義的;給定你已經做了一些毫無意義的,它假定您不小心做了,並警告你檢查....

與這樣的對比......

a = (++i, j); 

...哪裏有是第一項評估的副作用:i遞增。

+0

b = i,因爲逗號的所有運算符的優先級最低 - 使用括號 – Otomo

+0

@Otomo:哦耶 - 謝謝。 –