C和C ++中的几个一元运算符

是否符合标准要使用像

int i = 1;
+-+-+i;

以及我如何确定变量的符号?


是的。 一元+-从右到左关联,因此表达式被解析为

+(-(+(-(+i))));

其结果是1

请注意,这些可能会过载,因此对于用户定义的类型,答案可能会有所不同。


你的操作符没有任何副作用, +i对int本身没有做任何事情,你不使用临时生成的值,但删除+什么都不做,并且-(-i)女巫等于i自己。(删除代码中的+将转换运算符,我的意思是在计算中删除它,因为它没有效果)


i没有修改(C:没有插入序列点| C ++:以不确定的方式),所以它是合法的。 你只是为每个操作员创建一个新的临时工。

一元+甚至没有做任何事情,所以你所拥有的只是两个否定,只给出1的表达。 变量i本身从不改变。

链接地址: http://www.djcxy.com/p/12505.html

上一篇: Several unary operators in C and C++

下一篇: Node JS internet gateway/captive portal like used in public WiFi hotspots