如何解决为什么我总是得到 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 举报,一经查实,本站将立刻删除。