liv*_*ide 0 c++ operator-keyword
在C / C ++中,有一元减号运算符,它返回算术类型的加法逆(至少在大多数情况下),即
int x = 2, y = 2;
assert(x + (-x) == 0);
Run Code Online (Sandbox Code Playgroud)
从数学的角度来看,编写-x或0-x无关紧要,但是从程序员的角度来看,确实如此。通常,用于评估-x的指令序列与用于评估0-x的指令序列不同!尽管只是语法糖,但在C ++中使用一元减运算符确实有意义。那么一元运算符是否返回乘法逆,不是吗?但是,为什么C ++(像许多(大多数?所有?)语言一样)缺少这样的运算符?
编辑:
我的主要观点是,计算数字x的逆数(加法或乘法)不需要计算机处理中性元素(分别为0或1)。实际上,0和1对于计算机而言并非无关紧要的实体。对于浮点类型(例如C中的float或double),虽然评估0.0-x或1.0 / x相当“简单”(此处精度仍然是一个大问题),但总体上它可能变得相当复杂。喜欢多。精度浮点类型0.0-x比-x复杂得多,因此-x不仅方便,而且生成更有效的代码。另一方面,必须引入像inv(x)或x.inv()之类的函数或通过乘法实现相同的功能(乘法逆),而不是仅仅为1.0 / x编写/ x ...
因为在数学中没有一元乘法逆符号。
您可以将其表示为一个x^-1或1/x两个都可以在C ++中关闭(尽管以power回的方式进行处理)。
一元否定仅因存在于数学中而存在。