【问题标题】:If 1 == true, can you flip it?如果 1 == true,你能翻转它吗?
【发布时间】:2014-11-28 03:09:44
【问题描述】:

所以在 c++ 中,1 等于 true

int test = 1;
if(test) {// returns true; enter if loop
    passgo();
    collect200dollars();
}

翻转操作符(抱歉没有更好的名字)可以解决这个问题吗?

int test = 1;
if(!test) {// returns false; do not enter if loop
...
}else{
    goToJail();
}

【问题讨论】:

  • 您正在寻找逻辑否定运算符,是的,int 将转换为 bool,就像在 if 中一样。

标签: c++


【解决方案1】:

不仅一个,而且所有非零值都等价于真。写的时候

if(test) 

这意味着,编译器检查 test 的值是否等于 0。如果 test 的值等于 0,则 if 表达式返回 false,否则返回 true。

【讨论】:

    【解决方案2】:

    任何不同于零的基本数字类型(intdoublefloat 等)都将在条件下转换为等于truebool。因此! 运算符将否定bool,即true,后者将变为false

    查看相关 https://stackoverflow.com/a/8591324/3093378

    【讨论】:

      【解决方案3】:

      是的,您也可以检查它是否为假...它将否定测试为真,因为它不是零。在将 int 转换为 bool 时,如果值不为零,则将其视为真,否则为假。在您的情况下,您分配了 test = 1 这意味着 true,并且您否定 true 值意味着 if 条件将直接执行 else 代码..

      【讨论】:

      • “当然”有点奇怪,因为它很可能不直观。其他语言禁止整数和布尔值之间的转换。
      猜你喜欢
      • 2020-09-19
      • 1970-01-01
      • 2012-04-16
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 2011-03-13
      相关资源
      最近更新 更多