int a, b, i=10, j=20;
a = (i,j);
b = i,j ;`
當我編譯在linux上述 程序(克++)我在行號2得到警告:警告:逗號的左邊的操作數在克無影響++編譯器
左手逗號的操作數沒有任何影響)
和行號3
(逗號的右邊的操作數具有沒有效果)。
我不明白什麼是錯的。
int a, b, i=10, j=20;
a = (i,j);
b = i,j ;`
當我編譯在linux上述 程序(克++)我在行號2得到警告:警告:逗號的左邊的操作數在克無影響++編譯器
左手逗號的操作數沒有任何影響)
和行號3
(逗號的右邊的操作數具有沒有效果)。
我不明白什麼是錯的。
你認爲這個位有什麼用?
a = (i,j);
它等同於:
a = j;
編譯器只是說有使用逗號操作時,前面的條款沒有任何副作用(即評估i
沒有「做」任何事情)是沒有意義的;給定你已經做了一些毫無意義的,它假定您不小心做了,並警告你檢查....
與這樣的對比......
a = (++i, j);
...哪裏有是第一項評估的副作用:i
遞增。
b = i,因爲逗號的所有運算符的優先級最低 - 使用括號 – Otomo
@Otomo:哦耶 - 謝謝。 –
你期望''a''有什麼價值? ''我''還是''j''?或兩者? ;) – BitTickler
我想同時打印 – user2787274
@ 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';'。 –