[#43713] Re: 演算子の優先順位(was: Re: irb と python のバグ?) — "きむらこういち" <hogemuta@...>

木村です。

20 messages 2007/07/14
[#43715] Re: 演算子の優先順位(was: Re: irb — TunTun-m <tntn@...> 2007/07/14

bc では次式の結果は 0.81 ではなく 0.8 になります。

[ruby-list:43713] Re: 演算子の優先順位(was: Re: irb と python のバグ?)

From: "きむらこういち" <hogemuta@...>
Date: 2007-07-14 09:43:45 UTC
List: ruby-list #43713
木村です。

07/07/14 に Tetsuo Sakaguchi<saka@slis.tsukuba.ac.jp> さんは書きました:

> を見ると、演算子の優先順位があります。それによると
> 「**」の方が「-(単項)」よりも優先順位が高いので、
>
> -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

In This Thread

Prev Next