gpt4 book ai didi

C 在赋值中相当于 Python 的 "or"

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:30 24 4
gpt4 key购买 nike

在 Python 中,您可以使用“或”运算符赋值。

两个 = 2 或无

在上面的表达式中,two 将等于 2

C 能复制这个吗?我怀疑 int two = 2 || NULL; 可以,但是除了 if 语句之外还有其他解决方案吗?

最佳答案

在 Python 中,a 或 b 的工作方式如下:

  1. 如果 bool(a) == True,返回 a
  2. 如果,那么,bool(b) == True,返回 b
  3. 否则,返回最后一个操作数,即b

那么,这是一个简单的三元运算符:(a)? (a) : (b);


让我们来看看 Python 的逻辑或运算符在内部是如何工作的:

>>> import dis
>>> dis.dis('5 or None')
1 0 LOAD_CONST 0 (5)
3 JUMP_IF_TRUE_OR_POP 9
6 LOAD_CONST 1 (None)
>> 9 RETURN_VALUE

所以,or实际上是JUMP_IF_TRUE_OR_POP,实现了in the CPython source code ,第 2939 行。

JUMP_IF_TRUE_OR_POP(target) 的工作方式如下:

  1. 如果栈顶 (TOS) 为真(也就是说,它等于 Py_True,或者 PyObject_IsTrue(TOS) 大于零),设置target 的字节码计数器。 TOS 弹出
  2. 否则继续执行

事实证明,正如预期的那样,结果是由一堆if语句决定的。

关于C 在赋值中相当于 Python 的 "or",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com