【问题标题】:What does & mean as a ternary operator& 作为三元运算符是什么意思
【发布时间】:2016-05-03 23:14:05
【问题描述】:

我有这段代码要翻译成 mips,但我不知道它是什么意思:A = B & C[0]

当我用谷歌搜索三元运算符时,我找不到任何提及 &,只有 e1 ? e2 : e

什么意思?

【问题讨论】:

  • 你为什么认为这是一个三元运算符?如果你认为是,你是否也认为A = B + C[0]是三元运算符?
  • 我想你的老师使用了一本打错字的书——类似的问题已经在这里得到了回答stackoverflow.com/questions/28160408/…
  • & 在您的示例中不是三元运算符,它是 binary 运算符。
  • 有些汇编语言中AND 是三进制的(例如,有两个输入寄存器和一个输出寄存器)。高级编程语言不是这样工作的:结果是临时的,你需要决定如何处理它。

标签: java c++ ternary-operator


【解决方案1】:

这里没有三元运算符。该表达式等价于A = (B & C[0]),即A 被分配给BC[0] 的按位与结果。

【讨论】:

  • ...如果变量是 boolean 类型,则为逻辑与。
【解决方案2】:

【讨论】:

  • 在 C++ 中是按位与。在 Java 中,它取决于操作数的类型;它可以是按位与或非短路逻辑与。
【解决方案3】:

这里的& 是二进制(2 个输入)运算符“按位与”。 在这种情况下,您有:

A = B & C[0];

所以A 将收到BC[0] 的逐位与-ing 的结果。 让我们假设 A、B 和 C[0] 是两个 32 位整数,它们的值是我随机分配的,让我们以二进制形式查看此操作:

B    = 0000 0001 0010 0100 1000 1001 1011 1111
C[0] = 1001 1110 1101 1101 1010 1010 1010 0101
A    = 0000 0000 0000 0100 1000 1000 1010 0101 (the and of the two values above)

也就是说,A 只有在 BC[0] 都具有 1 位的情况下才有 1 位。

十进制是19171775 & 2665327269 = 297125

顺便说一句,三元运算符有 3 个输入,最常见的是 ?:,如 R = C ? B : A

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 2020-12-07
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2015-09-18
    • 2017-03-29
    • 2011-03-16
    • 2011-07-09
    相关资源
    最近更新 更多