《マクロ》演算子の結合規則No.04259
colder さん 09/10/19 14:50
 
マクロの演算子の結合規則に関する要望です。

現在、三つある単項演算子のうち、
- 演算子は、すべての二項演算子の直後に書ける。
! 演算子は、すべての二項演算子の直後に書けない。
+ 演算子は(<= >= < > != == && ||)の直後にのみ書ける。

演算子によって、二項演算子の直後に書けるかどうかが変わるのは分かりにくいです。

すべての二項演算子の直後に、すべての単項演算子を書けるように仕様を統一してい
ただけないでしょうか?

[ ]
RE:04259 《マクロ》演算子の結合規則No.04263
秀丸担当 さん 09/10/19 15:51
 

>すべての二項演算子の直後に、すべての単項演算子を書けるように仕様を統一してい
>ただけないでしょうか?

確かにC言語などと違うことになっていて、分かりづらいと思います。

!については以前にも他の方からご指摘を受けたことがありますが、優先順位が低
いという仕様になってしまっているため、(!1 && 0)が真になります。
(こういう使い方が実際されているのかどうかはわからないですが)

(#a && !#b)を可能にすると、(!#a && #b)の挙動の誤解を生むと思います。
さらに(#a && !#b && #c)はどうなるのかということになってしまいますし、あい
まいな仕様となってしまうと思います。
仕様が変えられたらいいですが、最初にこういう仕様と定めてしまったのでいま
から変えるのは難しいかもしれないです。

+については、できたほうがいいと思います。
仕様上の問題も無いと思うので、修正させていただきます。

[ ]
RE:04263 《マクロ》演算子の結合規則No.04266
colder さん 09/10/20 17:15
 
>!については以前にも他の方からご指摘を受けたことがありますが、優先順位が低
>いという仕様になってしまっているため、(!1 && 0)が真になります。

これは知りませんでした。
これだと、!演算子は && や || よりもさらに低い優先順位をもつことになりませんか?
マクロのヘルプだと、同じ優先順位にもつように書かれています。

ここまで優先順位が低いと、二項演算子の直後に書けるようにする意味がほとんどな
いかもしれませんね。

[ ]
RE:04266 《マクロ》演算子の結合規則No.04269
秀丸担当 さん 09/10/21 09:53
 

>これだと、!演算子は && や || よりもさらに低い優先順位をもつことになりません
>か?
>マクロのヘルプだと、同じ優先順位にもつように書かれています。

確かにヘルプでは同じように書かれていましたが、さらに低い優先順位になって
いました。
&&ではなく(!1&0)でも同じことが言えるので、やはり仕様としては同じことでし
た。

[ ]