• ベストアンサー

定数の定義方法 #define

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

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.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

crm
質問者

お礼

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

その他の回答 (1)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

#defineで定義するマクロ定数(記号定数)には型はありません。 ソースコードに   #define AA 1  a=AA; のように書くと、コンパイル時にプリプロセッサで  a=1; のように置換されるのです。 http://naruzo.cside1.com/html/online/ckouza/ckouza2.htm

crm
質問者

お礼

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

関連するQ&A