【问题标题】:How is the comma operator being used here? [duplicate]这里如何使用逗号运算符? [复制]
【发布时间】:2012-10-01 05:18:56
【问题描述】:

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

我对C++并不陌生,但这是我第一次看到以下代码:

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

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

【问题讨论】:

  • 不要写那种难读的代码。
  • 那是我看到的代码。你说的难读是什么意思?您的意思是在这种情况下不使用逗号运算符还是什么?
  • @seeker - 如果我们要问代码的作用,那它可怕的代码。

标签: c++ comma-operator


【解决方案1】:

这段代码等价于:

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

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

查看逗号运算符了解更多详情。

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

【讨论】:

  • 你确定吗?我认为代码相当于int b = a = 2; int b = a + 1;注意细微差别
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 2013-04-08
    • 2017-11-01
    • 2012-10-30
    • 2015-01-23
    相关资源
    最近更新 更多