You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中减号运算结果为何受换行符影响?

为什么Ruby中第二个puts语句输出-2而非预期的-1?

先看你的代码和实际输出:

代码:

x = 1
y = 2

puts ( x -
       y )

puts ( x
       - y )

puts ( x - y )

输出:

-1
-2
-1

问题核心在于Ruby对换行的解析规则:

  • 第一个puts里,x -在行尾结束,Ruby会判定这是二元减号运算符的不完整表达式,需要后续操作数,因此换行后的y会被当作减号的右操作数,实际计算的是x - y,结果为-1。
  • 第二个puts里,x单独占一行,已经是完整表达式。下一行的- y会被Ruby解析为一元负号运算符作用于y,也就是计算-y。而Ruby的括号内如果有多个换行分隔的表达式,会依次执行并返回最后一个表达式的结果,这里就是-y的值-2,所以最终输出-2。
  • 第三个puts是标准单行表达式,直接计算x - y,结果自然是-1。

简单来说:换行的位置决定了Ruby把-当成二元减号还是一元负号,再结合括号内多表达式返回最后结果的规则,就导致了第二个输出的差异。

内容的提问来源于stack exchange,提问作者Marc Ihm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 11:59:50