为什么我得到 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 !!
}
}
为什么我得到 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 !!
}
}
目前尚不清楚您要做什么,但 if 语句中的条件
if (a = 8 && (a = a - 5))
相当于
if ( a = ( 8 && (a = a - 5 ) ) )
因此,逻辑 AND 运算符产生 true,因为左操作数8
不等于,0
并且表示赋值表达式的右操作数a = a - 5
也不等于 0。因此,赋值 ( ) 中a
的 bool 值转换为。true
a = true
1
要获得预期的结果 3,您必须编写如下条件
if ( ( a = 8 ) && (a = a - 5))
在此示例中,因为首先评估8 && (a = a - 5)
哪个始终为真且等于 1,然后它将分配给 a,这就是它变为 1 的原因。
如果您在此处看到,它将显示首先&&
将评估然后=
即使您更改数字,结果也会变为 1。
应该按这个顺序写:
if ((a = 8) && (a = a - 5))