c++中的=+运算符
=+ operator in c++?
我有一个关于程序的问题,该程序包含以下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
, foo
和char 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 += 4
或x != 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的论证无关。你可以简单地把它的现代形式替换掉,例如用+=代替=+。
- 运算符 = 中的条件
- 如何处理运算符=中的常量成员?
- 返回 bool 作为 CPP 中 bool 运算符 [] 中的值
- 运算符中的不同类型? 具有无捕获,相同的签名,lambda
- C++中的字符串类: +运算符中的错误?
- 相当于C++运算符中的 Python
- 如何处理自定义输出运算符中的 iomanips?
- 处理输入流运算符>>中的无效输入
- 自定义容器中的括号运算符中的恒常性
- 我的重载运算符 == 中的 C++ 参数太少
- 比较运算符==中的对象指针
- 根据运算符中的枚举值推断类型
- C++ 输出流运算符 <<() 中的字符何时加宽?
- 正在使用C 三元运算符中的字符串常数,一种无效的非效率数组的使用
- 比较运算符 == 中的共享指针恒常性
- 指向重载前缀和后缀运算符中的类对象的指针
- 友元运算符中的变量范围
- 运算符中的"With respect to an indeterminately-sequenced function call"
- [ ] - 运算符中的加法和递增表达式
- 模板 &&运算符中的无效操作数+