为何XOR运算未达预期?3**2==9 ^ 3-2==4结果为False的原因
问题分析:表达式
3**2==9 ^ 3-2==4结果为False的原因 先看你给出的代码执行结果:
3**2==9 ^ 3-2==4 # 输出:False True ^ False # 输出:True
问题出在Python运算符的优先级上,你预期的是先计算两个==比较,再对结果做按位异或^,但Python的运算顺序和你想的不一样:
运算符优先级从高到低的关键顺序:
**(指数运算)>-(减法)>^(按位异或)>==(比较运算)- 并且比较运算支持链式判断(比如
a==b==c等价于(a==b) and (b==c))
对
3**2==9 ^ 3-2==4的实际运算步骤:- 第一步:计算
3**2→ 9 - 第二步:计算
3-2→ 1 - 第三步:计算
9 ^ 1(因为^优先级高于==)→ 二进制1001 ^ 0001 = 1000,即十进制的8 - 第四步:计算链式比较
9 ==8 ==4→ 等价于(9==8) and (8==4)→False and False→ 最终结果False
- 第一步:计算
如果你想实现预期的逻辑(先比较再异或),需要用括号明确优先级:
(3**2 ==9) ^ (3-2 ==4) # 输出:True
内容的提问来源于stack exchange,提问作者Phung Doan
相关产品推荐
相关产品推荐

