【问题标题】:What is the meaning and name for "+=" in C++?C++中“+=”的含义和名称是什么?
【发布时间】:2013-03-26 19:26:58
【问题描述】:

我对 C++ 还很陌生,我一直在阅读和编写自己的一些代码。我时不时会看到这些运营商,如果那是正确的词吗?

+= // Not sure what it means

所以我的问题是:它们是什么意思/做什么,它们叫什么?

为了进一步参考,我想知道它们叫什么,以便我可以轻松查找(例如,仅搜索“+=”一无所获)。

编辑:对于不知道其含义(或者在我的情况下知道这些名称)的其他人,我发现了这个维基百科链接,对其他人可能会派上用场:http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B

【问题讨论】:

  • 我相信它们被称为复合赋值运算符。使用该术语进行搜索应该会有更好的运气。
  • 这个问题可以很容易地通过谷歌搜索得到答案,显示出很少的研究工作。
  • 虽然你不是错的depa,但我不知道他们的名字,所以我正在搜索各种错误的东西。
  • 对不起,但比谷歌搜索更能完成一本非常(非常...)基本的 C++ 教程/书。当然,您无需成为专家就可以在这里提问,但了解您正在研究的语言的非常(非常...)基础知识可能是一个好主意。最后,在您最喜欢的 C++ 书籍中提前阅读两页会比发布和维护正确的 SO 问题要快得多。但不管怎样,还没有投反对票。
  • 我正在关注一本书,C++ Primer 6th edition - 我进入了第三章,到目前为止还没有提到这些(就像他们的名字一样)。主要是 cout/cin/data 类型等。虽然这有点偏离主题,但我知道在发布它时这将是一个简单的答案。不管怎样,现在我知道了他们的名字,我可以做更多的研究。谢谢大家的回复。

标签: c++ operators compound-assignment


【解决方案1】:

是的,这些是运算符。更具体地说,它们被称为复合赋值运算符。以下是它们的完整列表:

*= /= %= += -= >>= <<= &= ^= |=

它们的定义如下:

E1 op = E2 形式的表达式的行为等价于 E1 = E1 op E2,只是 E1 只计算一次。

所以x += 5;x = x + 5; 几乎相同。

您可以将其视为修改添加。如果你只做x + 5,表达式的结果就是你把x5加在一起得到的结果,但x没有改变。如果你使用x += 5;x 实际上的值增加了 5。

【讨论】:

  • 比如说 int i = 5;我+= 5; // 现在我是 10 岁?
  • 是的。基本上它只是减少源代码大小并增加可读性
  • 太棒了,谢谢。我现在知道他们的名字,并且可以在未来搜索:) - 不知道为什么我投了这么多票,我想这是一个非常简单的问题(我不知道这些名字)。当我被允许时添加为答案。
【解决方案2】:

它只是一个缩写: a+=2; 表示 a=a+2; 当然还有尽可能多的运算符:您可以重载它以赋予它其他含义,实际上我们经常这样做是为了提供含义,例如在我们的类 SomeClass 中添加 int 意味着什么:

SomeClass s;
s+=1; //operator+=(SomeClass& s, int i){} is used here

class A{
public:
    A():i_(123){}
    ~A(){}
    int i(){return i_;}
    A const& operator+=(int i){
       std::cout<<"operator+=";
       this->i_=i_+i;
    }
private:
    int i_;
};


int main(int argc, char** argv) {

    A a1;
    a1+=3;
    std::cout<<a1.i();
    return OK;
}

输出:运算符+=126

【讨论】:

  • 嗯,从技术上讲,它是一个完全不同的运算符(对于非内置类型,不仅在技术上而且在实践上)。
  • 当然这个是不一样的,但是扩展到这个,所以我解释了使用这个操作符是什么意思
  • 它可以被重载,以至于它的含义不等同于你显示的扩展。
  • 当然,但这不是 OP 要求的。他问我认为的基本含义
猜你喜欢
  • 1970-01-01
  • 2011-02-05
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2015-07-14
  • 2019-03-01
相关资源
最近更新 更多