红宝石模数.为什么这两个总和打印出不同的答案?

Phi*_*pot 0 ruby ruby-on-rails

我正在学习ruby并且在使用%Modulus总和时遇到问题.

puts "example #{101 % 4}"
Run Code Online (Sandbox Code Playgroud)

上面打印1在终端,这是我所期望的.

为什么下面打印101在终端?当然它和上面一样吗?

puts "example #{100 + 1 % 4}"
Run Code Online (Sandbox Code Playgroud)

我知道%只是说"X除以Y而J剩余"的另一种方式.所以第二个例子肯定也应该返回1?

任何帮助将不胜感激.

Ser*_*sev 5

括号很重要.由于运算符优先级规则,第二个例子被ruby视为

100 + (1 % 4)
Run Code Online (Sandbox Code Playgroud)

这使

100 + 1
Run Code Online (Sandbox Code Playgroud)

等于101

你可能意味着

(100 + 1) % 4
Run Code Online (Sandbox Code Playgroud)