栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么x ==(x = y)与(x = y)== x不同?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么x ==(x = y)与(x = y)== x不同?

首先应按照括号中的顺序计算

不会。圆括号对计算或评估顺序有任何(一般)影响,这是一个普遍的误解。它们仅将表达式的各部分强制转换为特定的树,将正确的操作数绑定到作业的正确操作。

(而且,如果您不使用它们,则此信息来自运算符的“优先级”和关联性,这是语言的语法树定义方式的结果。实际上,这仍然是您使用语言时的工作方式使用括号,但我们简化并说我们当时不依赖任何优先规则。)

一旦完成(即,将您的代码解析为程序),仍然需要对那些操作数进行求值,并且有分别的操作规则:所述规则(如安德鲁向我们展示的那样)指出每个操作的LHS首先用Java评估。

请注意,并非所有语言都如此。例如,在C
++中,除非您使用短路运算符(如

&&
或)
||
,否则操作数的求值顺序通常是不确定的,并且您不应以任何方式依赖它。

教师需要停止使用具有误导性的短语来解释操作员优先级,例如“这使得添加首先发生”。给定一个表达式

x * y + z
,正确的解释是“运算符优先级使在
x *y
和之间进行加法
z
,而不是在
y
和之间进行加法,而
z
没有提及任何”顺序”。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440862.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号