38767


Rubyの演算子は優先順位が高い順に*、+、>、=なので

[code]

    m=m*3+1>n
    
[/code]

の場合は

[code]

    m=(m*3+1>n)
    
[/code]

と同義になるのは納得がいきます。

しかし、(比較演算子からみて)これと左右を逆にした

[code]

    n<m=m*3+1
    
[/code]

が

[code]

    (n<m)=m*3+1
    
[/code]

と同義にならず、

[code]

    n<(m=m*3+1)
    
[/code]

と同義になるのは演算子の優先順位からして違和感を覚えます。  
優先順位の他に何か規則があるのでしょうか？


CC BY-SA 3.0
2017-10-16T15:47:19.877
38766
2017-10-17T09:02:06.930
2017-10-17T09:02:06.930
25791
25791
question
ruby
Rubyの演算子の優先順位について


`n<m`はいわゆる左辺値ではないからだと思います。Rubyの公式リファレンスでも、[「代入式の左辺は以下のいずれかでなければなりません」](https://docs.ruby-
lang.org/ja/latest/doc/spec=2foperator.html#assign)として、代入式の左辺になりうるものを列挙しています。


CC BY-SA 3.0
2017-10-16T16:08:21.697
38767
2017-10-16T16:08:21.697
4010
38766
answer