dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。

定数を定義したいのですが、
その数値が符号無し長整数の場合どのように
定義すれば宜しいのでしょうか。
符号有りの場合は特に指定しなくても宜しいのですか。

どうぞ宜しくお願いします。

A 回答 (2件)

マクロ定数には型はないですが、プリプロセッサで解釈されるときに


型が問題になります。
X3010(CのJIS規格) §6.1.3.2では「整数定数の型はその値を
表現できる最初(int以上の小さい型から最初)の型とする」となってます。
だから#define A 1と書くと、解釈時にAの型はintになり、
intで表現できない数を書くとlong intになります。
その値を使って計算をすると、結果が異なってくる可能性があります。
(たとえば、long intだと桁あふれのしない計算が、intだとあふれるとか)

その数値がunsigned long intであることが必要ならば、
数値の最後にULをつけることで型を指定できます。

#define A 1UL
    • good
    • 0
この回答へのお礼

取り急ぎお礼を申し上げます。
どうもありがとうございます。

お礼日時:2003/03/01 17:33

#defineで定義するマクロ定数(記号定数)には型はありません。



ソースコードに 
 #define AA 1
 a=AA;
のように書くと、コンパイル時にプリプロセッサで
 a=1;
のように置換されるのです。

http://naruzo.cside1.com/html/online/ckouza/ckou …
    • good
    • 0
この回答へのお礼

取り急ぎお礼を申し上げます。
どうもありがとうございます。

お礼日時:2003/03/01 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!