为什么 1+++2 = 3?

发布于 2024-07-13 09:08:04 字数 218 浏览 7 评论 0原文

Python 如何计算表达式1+++2

我在中间放置了多少个 + ,它打印 3 作为答案。 请任何人都可以解释一下这种行为

对于 1--2 ,它正在打印 3 ,对于 1---2 ,它正在打印 -1

How does Python evaluate the expression 1+++2?

How many ever + I put in between, it is printing 3 as the answer. Please can anyone explain this behavior

And for 1--2 it is printing 3 and for 1---2 it is printing -1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

听风念你 2024-07-20 09:08:04

您的表达式与以下内容相同:

1+(+(+2))

任何数字表达式都可以在 - 前面添加以使其为负数,或者在 + 前面添加不执行任何操作(该选项是为了对称而存在的)。 带负号:

1-(-(2)) = 1-(-2)
         = 1+2
         = 3

1-(-(-2)) = 1-(2)
          = -1

看到你澄清了你的问题,说你来自 C 背景。 在 Python 中,没有像 C 中的 ++-- 这样的增量运算符,这可能是您感到困惑的根源。 要在 Python 中递增或递减变量 ij,请使用以下样式:

i += 1
j -= 1

Your expression is the same as:

1+(+(+2))

Any numeric expression can be preceded by - to make it negative, or + to do nothing (the option is present for symmetry). With negative signs:

1-(-(2)) = 1-(-2)
         = 1+2
         = 3

and

1-(-(-2)) = 1-(2)
          = -1

I see you clarified your question to say that you come from a C background. In Python, there are no increment operators like ++ and -- in C, which was probably the source of your confusion. To increment or decrement a variable i or j in Python use this style:

i += 1
j -= 1
一腔孤↑勇 2024-07-20 09:08:04

额外的 + 不是增量器(如 C++ 中的 ++a 或 a++)。 他们只是表明这个数字是正数。

不存在这样的 ++ 运算符。 但有一元 + 运算符和一元 - 运算符。 一元 + 运算符对其参数没有影响。 一元 - 运算符对其运算符求反或将其乘以 -1。

+1

-> 1-

++1

> 1

相同

   1+++2

与 +(+(1)) -> 3
因为它与 1 + (+(+(2)) 相同,

同样你可以用 --1 来表示 - (-1),即 +1。

  --1

-> 1

为了完整性,没有 * 一元运算符。所以 *1但有一个错误。
运算符是 of 的幂,它需要 2 个参数。

 2**3

-> 8

The extra +'s are not incrementors (like ++a or a++ in c++). They are just showing that the number is positive.

There is no such ++ operator. There is a unary + operator and a unary - operator though. The unary + operator has no effect on its argument. The unary - operator negates its operator or mulitplies it by -1.

+1

-> 1

++1

-> 1

This is the same as +(+(1))

   1+++2

-> 3
Because it's the same as 1 + (+(+(2))

Likewise you can do --1 to mean - (-1) which is +1.

  --1

-> 1

For completeness there is no * unary opeartor. So *1 is an error. But there is a **
operator which is power of, it takes 2 arguments.

 2**3

-> 8

做个ˇ局外人 2024-07-20 09:08:04

1+(+(+2)) = 3

1 - (-2) = 3

1 - (-(-2)) = -1

1+(+(+2)) = 3

1 - (-2) = 3

1 - (-(-2)) = -1

诗酒趁年少 2024-07-20 09:08:04

尝试一元加法和一元减法

一元 -(减)运算符产生其数字参数的否定。

一元 +(加号)运算符产生的数字参数不变。

>>> +2
2
>>> ++2
2
>>> +++2
2
>>> -2
-2
>>> --2
2
>>> ---2
-2
>>> 1+(++2)
3

Trying Unary Plus and Unary minus:

The unary - (minus) operator yields the negation of its numeric argument.

The unary + (plus) operator yields its numeric argument unchanged.

>>> +2
2
>>> ++2
2
>>> +++2
2
>>> -2
-2
>>> --2
2
>>> ---2
-2
>>> 1+(++2)
3
旧伤还要旧人安 2024-07-20 09:08:04

我相信它被解析为,第一个 + 作为二元运算(加),其余的作为一元运算(取正)。

 1 + (+(+2))

I believe it's being parsed as, the first + as a binary operation (add), and the rest as unary operations (make positive).

 1 + (+(+2))
悲欢浪云 2024-07-20 09:08:04

将其视为 1 + (+1*(+1*2)))。 第一个 + 是运算符,后面的加号是第二个操作数的符号 (= 2)。

就像 1---2 与 1 - -(-(2)) 或 1- (-1*(-1*(2)) 相同

Think it as 1 + (+1*(+1*2))). The first + is operator and following plus signs are sign of second operand (= 2).

Just like 1---2 is same as 1 - -(-(2)) or 1- (-1*(-1*(2))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文