微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我总是得到 1 作为答案,而不管分配给变量 a 的值如何

如何解决为什么我总是得到 1 作为答案,而不管分配给变量 a 的值如何

为什么我的输出是 1 而不是 7(如果 a 最初分配给 12 ,那么 a-5 应该给 7)或 3 as(如果 a 分配给 8 那么 a-5 应该给 3 )。无论分配给 a 的值如何,输出始终保持为 1。

int main()
{
    int a = 12;
    if (a = 8  && (a = a - 5))
        cout << a;
    else
    {
        //do nothing !!
    }
}

解决方法

除了 if 语句中的条件,还不清楚您要做什么

if (a = 8  && (a = a - 5))

相当于

if ( a = ( 8  && (a = a - 5 ) ) )

所以逻辑 AND 运算符产生真,因为左操作数 8 不等于 0 并且表示赋值表达式的右操作数 a = a - 5 也不等于 0。所以a 被赋值为布尔值 true,该值在赋值 ( a = true ) 中转换为 1

要获得预期的结果 3,您必须编写如下条件

if ( ( a = 8 ) && (a = a - 5))
,

在此示例中,因为首先评估始终为真且等于 1 的 8 && (a = a - 5),然后它将分配给 a,这就是它变为 1 的原因。

如果您看到 here,它将显示第一个 && 将评估然后 =,即使您更改数字,结果也变为 1。

应该按这个顺序写:

if ((a = 8)  && (a = a - 5))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。