当我们使用赋值而不是比较时,如何评估ifwhile条件?

当我们使用赋值而不是比较时,如何评估ifwhile条件?,第1张

当我们使用赋值而不是比较时,如何评估if / while条件?

=
是赋值运算符,
==
是比较运算符。但

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){..}
    -如果错误地使用了
    =
    而不是
    ==
    我们将得到编译错误,它将通知我们有关编译错误,因为我们无法 任何 赋给 like
    true
    ,我们只能将值 赋给变量


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5561458.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存