在python中使用两个加法运算符来添加两个整数是不是有效? [复制]

Posted

技术标签:

【中文标题】在python中使用两个加法运算符来添加两个整数是不是有效? [复制]【英文标题】:Is using two addition operators for adding two integers valid in python? [duplicate]在python中使用两个加法运算符来添加两个整数是否有效? [复制] 【发布时间】:2017-11-13 00:09:27 【问题描述】:

我刚开始学习python。我只是想玩打印功能。我最终编写了以下代码。

print(2 ++ 2)

我预计 Python 解释器会抛出错误,因为我将两个加法运算符并排放置,而没有在它们之间放置一个整数。相反,python 解释器没有抛出任何错误并返回 4 作为输出。 我还尝试了以下代码:-

print(4 -- 2)

输出为 6。

谁能给我解释一下这些?

【问题讨论】:

如果从某项中减去负二,这与向其添加二是一样的。 相关(但可能不重复):***.com/q/1485841/5827958 @zondo: 不,这是一个非常合适的欺骗目标,解释完全一样。 【参考方案1】:

2 ++ 2被解释为:

2 ++ 2 == 2 + (+2)

因此,您在 2+2 之间执行加法运算,其中第二个 + 因此是一元加法。如果你写2 +++ 2,也会发生同样的情况:

2 +++ 2 == 2 + (+(+2))

4 -- 2 的情况类似:

4 -- 2 == 4 - (-2)

所以你从4 中减去-2 得到6

不禁止使用两个、三个(甚至更多)加法,但对于整数/浮点数只会导致更多的混乱,所以你最好不要这样做。

classes 可以定义自己的一元加号和一元减号 运算符(例如Counter)。在这种情况下,++ 的行为可能与+ 不同。所以你最好不要使用++(如果你这样做,请在两个+ses 之间放置一个空格,以明确第二个+ 是不同的运算符)。 p>

由于存在一元加号和减号运算符,因此第一个 +- 之后的任何内容都被解释为一元。所以2 ++--++- 2 将导致0 因为:

2 ++--++- 2 == 2 + (+(-(-(+(+(-2))))))

【讨论】:

【参考方案2】:
2 ++ 2

2 + (+2)

4 -- 2

4 - (-2)

这只是运算符优先级、固定性和数量的问题:

2 ==+-+-+ 2
#>>> True

注意对于数字,一元前缀+被定义为恒等函数,一元前缀-被定义为否定(即双元前缀--是恒等函数);但 Python 支持运算符重载,因此不能保证所有对象都如此。

【讨论】:

以上是关于在python中使用两个加法运算符来添加两个整数是不是有效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

重载加法运算符以添加两个多项式

使用整数运算的浮点加法

模拟--大数加法

不用加减乘除做加法

大整数加法计算

在Linux中不使用乘法运算符的情况下,两个整数乘积的汇编代码