掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.25225

変数の最大値を定める
投稿者---firefox(2006/01/11 20:46:00)


ただの書き方の問題なのですが、ある整数型の変数があってその値を制限したいんです。私が思い付く限りこの書き方が4つあってどれにすべき悩んでいます。

/*1番*/
#define set_max(V, L) ((V) = ((V) > (L)) ? (L) : (V))
set_max(i, 4);

/*2番*/
if (i > 4)
i = 4;

/*3番*/
i = (i > 4) ? 4 : i;

/*4番*/
#define MIN(A, B) (((A) > (B)) ? (B) : (A))
i = MIN(i, 4);

扱っているプログラムはゲームです。かなり条件分岐が多く、コードのあちこちで頻繁にこのような処理を行います。マクロの'set_max'はこの問題のために作ったもので、もう一つのマクロの'MIN'はその他の用途でも使います。

1番がもっとも直感的だと思うのですが、=が見なくなって流れがわかりにくくなるのではと心配しています。どうでもいい問題かもしれませんが、もしよろしければアドバイスください。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:変数の最大値を定める 25227 たいちう 2006/01/11 20:59:33


No.25227

Re:変数の最大値を定める
投稿者---たいちう(2006/01/11 20:59:33)


2か4だろうね。

1は、マクロの定義を見ないと安心できないし、MAX(i, 4)という意味かと
誤解してしまうかもしれない。

3の3項演算子も、あまり見やすいとはいえず、しょっちゅう出てくるなら
避けたいところ。

1のマクロのネーミングは、『iは最大でも4』ということを言いたいんだと
思うけど、2の方が絶対に判りやすいのでは?

4は最大を制限するのに、逆の意味のMINを使うから抵抗あるのかも
しれないけど、このマクロは良く使うので誤解されにくいと思う。

私の結論:普通は2。どうしても関数の形にしたいなら4。

# 他の書き方が思いつかなかったけど、どなたかあります?


この投稿にコメントする

削除パスワード

No.25232

Re:変数の最大値を定める
投稿者---firefox(2006/01/11 22:16:47)


アドバイスありがとうございます。
2にすることしました。では


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧