【问题标题】:Trivial topic, does an assignment return 'false'? [duplicate]琐碎的话题,作业是否返回“假”? [复制]
【发布时间】:2013-03-18 05:57:29
【问题描述】:

在这种情况下,结果是 6。但是 i=5 不被认为是一个非零值吗?如果我做 i+=5 那么它就被认为是真的。为什么这有什么不同? (也不是,我不是故意放 i==5)

int i=7;
if(i=5) {
cout << ++i;
} else {
cout << --i;
}

【问题讨论】:

  • 6 不是预期的结果吗?表达式i=5 非零,cout &lt;&lt; ++i; 的结果是 6 (5+1) 发送到 cout。
  • 之前在 stackoverflow 上已经回答了同样的问题。 Here 是。
  • 只是一个提示:如果它是微不足道的,它可能以前被问过。搜索可能会为您节省一些反对票。

标签: c++


【解决方案1】:

=+= 等赋值运算符返回对象被赋值后的值。所以,如果你给false0赋值,你可以从赋值运算符中得到false

i=5 的计算结果为 5,在 if () 的眼中就是 true。但是i=0 会评估为0,这将被if () 视为false

【讨论】:

    【解决方案2】:

    赋值返回任何已分配的内容。在您的示例中:

    int i = 7;
    if (i = 5) { // returns 5, which is non-zero, or "true"
        cout << ++i; // prints 6, or 5+1
    }  else {
        cout << --i; // would print 4, or 5-1, if it was hit, which it never will
    }
    

    您可能对前置增量与后置增量感到困惑。例如,考虑以下情况:

    int i = 7;
    if (i = 5) { // returns 5, which is non-zero, or "true"
        cout << i++; // prints 5, i is 6 after this line
    }  else {
        cout << i--; // would print 5, but i is 4 after this line
    }
    

    【讨论】:

      【解决方案3】:

      你的代码是这样的:

      i = 7;
      i = 5;
      if ( 5 ) // it's true. Isn't it ?
      {
          i = i + 1; // now i is 6
          cout << i;
      }
      

      【讨论】:

        猜你喜欢
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 2012-09-19
        • 1970-01-01
        相关资源
        最近更新 更多