C言語関係掲示板

過去ログ

No.1031 シフトJISの1バイト目の判定

[戻る] [ホームページ]
No.13188

使い方の違いは
投稿者---初心一歩(2004/03/16 02:52:05)


#define isSJIS(c) ((c & 0xFF) >= 0x81 && (c & 0xFF) <= 0x9F || (c & 0xFF) >= 0xE0 && (c & 0xFF) <= 0xFC)

((c & 0xFF) >= 0x81 && (c & 0xFF) <= 0x9F || (c & 0xFF) >= 0xE0 && (c & 0xFF) <= 0xFC)

は同じことだと思うのですが、
どのように使う物なのでしょうか。


No.13194

Re:使い方の違いは
投稿者---たいちう(2004/03/16 09:48:54)


【シフトJISの1バイト目の判定】ですね。

No.13195

Re:使い方の違いは
投稿者---たいちう(2004/03/16 10:00:04)


> は同じことだと思うのですが、
> どのように使う物なのでしょうか。

もしかして質問はもう1つあるのかな。

#define isSJIS(c) ...
は、マクロを定義しているのです。
マクロは関数のように使えるので、c の判定をしたいときにisSJIS(c)と書くだけで、
... の部分の長い演算の代わりになります。
マクロを使わず、判定が必要になるたびに...を正確に書くのは大変だし、
プログラムが読みにくくなります。
この辺の利点は関数と同じですが、マクロは「副作用」とか「型のチェックがない」とか
の難しい点がありますので、自分でマクロを作る・修正する必要があるならば、
一度調べてみてください。

No.13205

Re:使い方の違いは
投稿者---初心一歩(2004/03/17 02:03:49)


ありあがとうございます。

マクロなのですね。
マクロは使用したことがないので、この機会に勉強してみます。