=是赋值运算符,
==是比较运算符。但
x = y
不仅 分配 的价值
y来
x,它也 将返回
该值。因此,我们可以执行
x=(y=1)将分配
1给的操作(甚至可以在此处删除括号)
y,然后返回
1将分配给的操作
x。
在您的情况下,
if (b =true)首先
true将其分配给
b它,然后将其返回,因此最终
if(true),它将始终为该布尔值执行来自分支的代码。
这通常是印刷错误的结果,因为在大多数情况下,我们要使用
==(等于运算符)而不是
=(赋值运算符)。
为了避免这个错误,我们可以编写如下代码
- 作为
if (b){..}-因为我们b == true
总是b
跳过== true
一部分。if
可以使用价值b
代替评估b == true
。当我们想使用否定而不是==false
写时if(!b){..} - 使用Yoda条件
if(true == b){..}-如果错误地使用了=
而不是==
我们将得到编译错误,它将通知我们有关编译错误,因为我们无法 将 任何 值 赋给 liketrue
,我们只能将值 赋给变量 。



