【问题标题】:What is the meaning of A += B == 1A += B == 1 是什么意思
【发布时间】:2018-08-06 10:56:34
【问题描述】:

我遇到了运算符= 的一种用法。是这样的:

A += B == 1;

其中 A 和 B 是整数,我在函数体中发现了这种用法。

我只是对第二个 == 用法感到困惑。

我当然知道A = B = 1;的意思

谁能解释一下?

【问题讨论】:

  • 为什么投反对票?这是一个明确的问题。如果您只是不喜欢这个问题,或者认为它“太容易”,请不要投反对票
  • A += (B == 1)。更好?
  • 感谢您的回答:现在一切都清晰完美了。这种编码方式使代码非常漂亮和干净。即使有时,非用户在开始时也会遇到一些麻烦。就像我一样。
  • @AndreasH。我没有投反对票,但这可能是由于指向源代码的链接,这是 StackO 禁止的。
  • @JiveDadson:我明白了。我也不喜欢这个链接,但认为它是小问题,因为没有它这个问题是可以理解的。但是,是的,理想情况下,它不应该存在。

标签: c++ operators conditional-operator


【解决方案1】:

这段代码:

 A += B == 1;

逻辑上等于:

bool b = B == 1;
A += b;

注意:bool 可以隐式转换为 inttrue 为 1,false 为 0)

【讨论】:

  • 好的。我有真假案件的想法。那么我们在==之后得到的另一个值是什么,例如:行号。 19 在提到的源代码中。是:ans -= cnt[t[i]] == 2;我应该如何阅读这里?
  • 好的,现在我已经清楚地从 Pac0 的回答中得到了这个想法。
【解决方案2】:

== 的优先级高于+=,所以先执行

B == 1是一个布尔表达式,可以为假或真

我们称该布尔为“结果”。

A += result 是一个加法 + 赋值(就像你可能已经知道的 A = A + result)。

由于在您的情况下 A 是 int,因此布尔值 result 如果为真,则隐式转换为数字 1,如果为假,则为 0。 (它也适用于其他数字类型)

更多关于隐式转换的信息:http://en.cppreference.com/w/cpp/language/implicit_conversion

所以,最后,这在逻辑上等价于“当且仅当 B 等于 1 时增加 A”:

if (B == 1)
  A += 1;

【讨论】:

    猜你喜欢
    • 2017-02-02
    • 2013-12-16
    • 2014-02-09
    • 2012-06-14
    • 1970-01-01
    • 2022-11-10
    • 2020-02-15
    • 2014-01-16
    • 1970-01-01
    相关资源
    最近更新 更多