当前位置:  开发笔记 > 编程语言 > 正文

==运算符和操作数

如何解决《==运算符和操作数》经验,为你挑选了4个好方法。

我想检查一个值是否等于1.以下代码行是否有任何区别

评估值== 1

1 ==评估价值

在编译器执行方面



1> Brian R. Bon..:

在大多数语言中,它都是一样的.

人们经常做1 ==评估值,因为1不是左值.这意味着你不能意外地完成任务.

例:

if(x = 6)//bug, but no compiling error
{
}

相反,您可以强制编译错误而不是错误:

if(6 = x)//compiling error
{
}

现在,如果x不是int类型,并且你正在使用类似C++的东西,那么用户可能已经创建了一个operator ==(int)override,它将这个问题带到了新的含义.在这种情况下6 == x不会编译,但x == 6会.



2> Jörg W Mitta..:

这取决于编程语言.

在Ruby,Smalltalk,Self,Newspeak,Ioke和许多其他单一调度的面向对象编程语言中,a == b实际上是一个消息发送.例如,在Ruby中,它等同于a.==(b).这意味着,当你编写时a == b,然后执行==类中的方法a,但是当你编写时b == a,则b执行类中的方法.所以,这显然不是一回事:

class A; def ==(other) false end; end
class B; def ==(other) true  end; end

a, b = A.new, B.new

p a == b # => false
p b == a # => true



3> erikkallen..:

不,但如果您不小心输入,后一种语法会给您一个编译器错误

if (1 = evaluatedValue)

请注意,今天任何体面的编译器都会在你写的时候发出警告

if (evaluatedValue = 1)

所以它主要与历史原因有关.



4> Douglas Leed..:

取决于语言.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有