- ベストアンサー
定数の定義方法 #define
いつもお世話になっております。 定数を定義したいのですが、 その数値が符号無し長整数の場合どのように 定義すれば宜しいのでしょうか。 符号有りの場合は特に指定しなくても宜しいのですか。 どうぞ宜しくお願いします。
- みんなの回答 (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
その他の回答 (1)
- MovingWalk
- ベストアンサー率43% (2233/5098)
回答No.1
#defineで定義するマクロ定数(記号定数)には型はありません。 ソースコードに #define AA 1 a=AA; のように書くと、コンパイル時にプリプロセッサで a=1; のように置換されるのです。 http://naruzo.cside1.com/html/online/ckouza/ckouza2.htm
質問者
お礼
取り急ぎお礼を申し上げます。 どうもありがとうございます。
お礼
取り急ぎお礼を申し上げます。 どうもありがとうございます。