2015-04-21 21 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:哦耶 - 谢谢。 –