From: "きむらこういち" Date: 2007-07-14T18:43:45+09:00 Subject: [ruby-list:43713] Re: 演算子の優先順位(was: Re: irb と python のバグ?) 木村です。 07/07/14 に Tetsuo Sakaguchi さんは書きました: > を見ると、演算子の優先順位があります。それによると > 「**」の方が「-(単項)」よりも優先順位が高いので、 > > -2**2**3 > > と書いたものは優先順位に併せて括弧を補うと > > -(2**2**3) > > となるので、-256 であっていると思います。 > > bc などはその辺の定義が異なるだけだと思います。 bc (GNU bc)は /* precedence */ %left OR %left AND %nonassoc NOT %left REL_OP %right ASSIGN_OP %left '+' '-' %left '*' '/' '%' %right '^' %nonassoc UNARY_MINUS %nonassoc INCR_DECR (下に行くほど優先順位が高い) という定義になっているので、べき '^' より単項マイナスのほうが高いですね。 ちなみに「式の」定義も | expression '+' expression | expression '-' expression | expression '*' expression | expression '/' expression | expression '%' expression | expression '^' expression | '-' expression %prec UNARY_MINUS のようになっていて、単項の'+' で始まる式は定義されていません #のでエラーになる POSIX的にどうとかはわかりませんが参考までに。 -- 木村浩一 I thought what I'd do was, I'd pretend I was one of those deaf-mutes or shoud I? mail kbk at kt.rim.or.jp web www.kt.rim.or.jp/~kbk/zakkicho/index.html