- ベストアンサー
defineで定数が置き換えられない?(C言語)
#defineについて質問です。 #defineは、ソースコード内にこの文字を見つけたら、コンパイルする前にこの文字をこの定数に置き換えて、というプリプロセッサですよね?だから、printfで#defineで定義した定数を出力する場合で、変換指定が必要ない場合は #include <stdio.h> #define DEF 100 void main(){ printf("#defineで定義された定数はDEFです"); } でもいいと思うんです。ですがこのソースコードは間違いで、実行結果は #defineで定義された定数はDEFです(←置き換えられてない) となってしまします。プリプロセッサだけ実行しても、DEFは100に置き換えられずそのままです。printfで#defineで定義した定数を出力させたい場合は書式指定をしなければなりません。なぜ、このような場合は#defineで定義した定数は置き換えられないのでしょうか?回答よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
- 79562
- ベストアンサー率0% (0/1)
回答No.4
- php504
- ベストアンサー率42% (926/2160)
回答No.3
- rabbit_cat
- ベストアンサー率40% (829/2062)
回答No.2
- Evreux
- ベストアンサー率29% (225/774)
回答No.1
お礼
詳しい・・・! 確かにトークンにしないと不便ですね。 トークンがないとソースももっと正確に書かないといけなくなりますし、便利ですねトークン。