为何表达式x = y = z未返回false?变量相等判断代码异常求助
为啥你的
x = y = z没返回预期结果? 嘿,我来帮你把这个逻辑掰明白~
首先得搞清楚:几乎所有编程语言(包括你用的这类BASIC方言)都不支持直接用x=y=z来判断三个变量是否相等,这是运算符的结合性在搞鬼!
你的代码到底在算什么?
你写的x = y = z并不是同时比较三个变量,而是从左到右分步计算的:
- 先算
x = y:因为x和y都是0,这个比较的结果是布尔值True。在很多BASIC版本里,布尔值True会被转换成数值(比如-1或者1,具体看方言,但肯定不是0); - 再用第一步的结果(比如
-1)和z比较:也就是-1 = z,而z是0,这个比较的结果自然是False。
所以整个表达式最终返回False,你的IF条件不成立,当然不会打印"false"啦~
正确的写法应该是怎样的?
要判断三个变量是否全部相等,得用逻辑与(AND)把两个比较条件连起来:
x = 0 : y = 0 : z = 0 IF x = y AND y = z THEN PRINT "All variables are equal"
这样先判断x和y相等,再判断y和z相等,只有两个条件都满足时,才会执行后续的打印操作。
补充个小误区
很多人会直觉认为x=y=z是“三个变量相等”的意思,但实际上这是对运算符逻辑的误解——连续的比较运算都是分步执行的,从来不会同时判断多个值的相等性哦~
内容的提问来源于stack exchange,提问作者user9617746
相关产品推荐
相关产品推荐

