c++中的=+运算符

=+ operator in c++?

本文关键字:运算符 中的 c++      更新时间:2023-10-16

我有一个关于程序的问题,该程序包含以下if语句:

if (x =+ 4){
    x += 5;
}

我从来没见过这样的东西,肯定不是打字错误吧?=+真的有什么用吗?

x =+ 4

x= (+4)

x=4

虽然这样的结构在语法上是正确的,并且可以编译,但在x==4的目的下,它没有多大意义,而且很可能是一个错字,特别是它被用作if

的条件。

在早期的C语言中,=++=是一样的,但那是很久以前的事了,从来没有在c++中出现过。


=+a可理解为= (+a)

一元+操作符如果实参是窄类型,则将其提升为int,否则为无操作。

=为正则赋值。


您可以通过以下方式创建=+=之间的差异:

如果=为两个特定的配对重载两次,例如{Foo, int}和{Foo, char},并且您有一个Foo, foochar c的实例,则

foo = c // calls the overload taking a `char`

foo =+ c // calls the overload taking an `int`

调用不同的重载。

对不起,我最初的回答是由于愚蠢地误读了问题。

正确的答案是,这段代码只是给x赋正4的值,因为它不为零,所以它满足if条件并再加5。

这个程序在当前状态下的一个更简单的形式是:

x = 9;

然而,我强烈怀疑有一个错字,if条件内的语句应该是x == 4, x += 4x != 4,具体取决于上下文。

好了,我的预感是正确的,=+和=-确实是今天使用的+=和-= op的过时形式:

Stack Overflow: =+在C语言中是什么意思?https://www.cs.auckland.ac.nz/references/unix/digital/AQTLTBTE/DOCU_064.HTM(现在这是一个复古的网页!)

专门

https://en.wikipedia.org/wiki/C_ (programming_language) # K.26R_C

告诉我们它们被改变了:"形式为=op(如=-)的复合赋值操作符被改变为形式为op=(即-=),以消除由i=-10等结构造成的语义歧义,这些结构被解释为i=-10(将i减10),而不是可能预期的i=-10(让i为-10)。"

所以它与明确地给出+ve或-ve的论证无关。你可以简单地把它的现代形式替换掉,例如用+=代替=+。