提问人:Gayatri Agnani 提问时间:5/28/2021 最后编辑:Vlad from MoscowGayatri Agnani 更新时间:5/28/2021 访问量:72
为什么我总是得到 1 作为答案,而不管分配给变量 a 的值如何
Why am I always getting 1 as answer irrespective of the value assigned to the variable a
问:
为什么我得到 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赞
Vlad from Moscow
5/28/2021
#1
目前尚不清楚您要执行的操作,但 if 语句中的条件
if (a = 8 && (a = a - 5))
相当于
if ( a = ( 8 && (a = a - 5 ) ) )
因此,逻辑 AND 运算符为 true,因为左操作数不等于 且表示赋值表达式的右操作数也不等于 0。因此,赋值 ( ) 中的布尔值被赋值为 。8
0
a = a - 5
a
true
a = true
1
要获得预期结果 3,您必须编写如下条件
if ( ( a = 8 ) && (a = a - 5))
0赞
N0ll_Boy
5/28/2021
#2
在这个例子中,因为首先计算哪个总是真且等于 1,然后它将分配给 这就是它变为 1 的原因。8 && (a = a - 5)
如果您看到这里,它将显示 first 将评估,然后即使您更改数字,结果也会变为 1。&&
=
应按以下顺序写:
if ((a = 8) && (a = a - 5))
下一个:运算符关联性、优先级
评论
=
是赋值,您要检查是否相等==
&&
具有比赋值更高的优先级,请参阅 en.cppreference.com/w/cpp/language/operator_precedence