如何在这里使用逗号运算符?

时间:2012-10-10 16:45:30

标签: c++ comma-operator

  

可能重复:
  C++ Comma Operator
  Uses of C comma operator

我不是C ++的新手,但这是我第一次看到以下代码:

int a=0;
int b=(a=2,a+1);

那是C ++代码。你能告诉我这里发生了什么吗?变量b如何得到值3?

2 个答案:

答案 0 :(得分:12)

此代码与此相同:

int a = 2 ; 
int b = a + 1 ;

评估逗号左侧的第一个表达式,然后评估右侧的表达式。最右边表达式的结果存储在=符号左侧的变量中。

查找逗号运算符以获取更多详细信息。

http://en.wikipedia.org/wiki/Comma_operator

答案 1 :(得分:3)

(a = 2, a + 1);返回3,因为在一般情况下,运算符(a,b)返回b,并且(a,b)中的计算从右到左开始。因此,在您的情况下,(a = 2, a + 1)返回a + 1,并且在执行a = 2运算符之后a + 1返回3.