运算符或赋值运算符的后面是啥? [复制]

Posted

技术标签:

【中文标题】运算符或赋值运算符的后面是啥? [复制]【英文标题】:what is behind the operator OR inside assignment operators? [duplicate]运算符或赋值运算符的后面是什么? [复制] 【发布时间】:2021-04-16 00:55:34 【问题描述】:

我知道运算符 OR 背后的机制,但在这种情况下,为什么输出是 7 ?背后是什么?

x = int(5)
x = x | 3
print(x)

谢谢。

【问题讨论】:

| 是按位或运算符; 5 | 3 = 0b101 | 0b11 = 0b111 = 7 【参考方案1】:

or| 不同。第一个是逻辑运算符,主要用于布尔值,但第二个称为按位运算符。它适用于操作数的二进制值。

5 = 101 二进制

3 = 011 二进制

按位或,即| 将对相应位(1 或 0 = 1、0 或 1 = 1、1 或 1 = 1)进行或运算,得到 111,即 7

还有按位和& 和按位不是~,以防你好奇

【讨论】:

以上是关于运算符或赋值运算符的后面是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

是否为数组/向量插入调用了赋值运算符或复制构造函数?

Python 3 中的 @ 运算符/分隔符是啥? [复制]

c++ 拷贝构造函数与赋值运算符重载函数的区别是

如何从基类调用派生赋值运算符?

派生类在基类中删除时是不是会有隐式复制构造函数或赋值运算符?

派生自std :: exception的类的赋值运算符