0

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

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

2 回答 2

1

目前尚不清楚您要做什么,但 if 语句中的条件

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

相当于

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

因此,逻辑 AND 运算符产生 true,因为左操作数8不等于,0并且表示赋值表达式的右操作数a = a - 5也不等于 0。因此,赋值 ( ) 中a的 bool 值转换为。truea = true1

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

if ( ( a = 8 ) && (a = a - 5))
于 2021-05-28T08:15:56.960 回答
0

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

如果您在此处看到,它将显示首先&&将评估然后=即使您更改数字,结果也会变为 1。

应该按这个顺序写:

if ((a = 8)  && (a = a - 5))
于 2021-05-28T08:16:03.740 回答