- ベストアンサー
C言語における定数の使用方法
こんにちは。 今日質問したいのは、タイトルにありますように、C言語における「定数」の使い方についてです。 私は現在、Visual C++を用いてC言語のプログラミングを勉強しているのですが、条件文(if文)に定数を用いてコーディングを行おうとしても、どうしてもエラー表示が出て、うまくコンパイルすることができません。 具体的には、 if(No>=1 && No<=10){ //具体的な処理部分 } というif文を、予めヘッダファイル内にて定義した定数 #define start 1; #define stop 10; を用いて次のように、 if(No>=start && No<=stop){ //具体的な処理部分 } コーディングしたいと考えています。 しかし、これをコンパイルするとエラーが発生してしまいどうにもうまくいきません。 また、定数ではなく数字で記述するとうまく回ります。 別のところで定数を、 wk = start; のように代入で使用しているのですが、そこではなにも問題がありません。 いったい何が間違っているのか、どのようにすればうまくいくのかを教えていただきたいと考え、書き込ませていただきました。 皆様、どうぞよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
皆さんがおっしゃられているとおり、セミコロンが余分です。#defineはプリプロセッサに対する命令であって、コンパイラによって処理されるわけではありません。ですから、C言語の文法にのっとって文末に";"を付ける必要はないのです。うっかり";"を付けると意図しない動作をするので気をつけましょう。
その他の回答 (2)
- Brown2002
- ベストアンサー率32% (24/74)
define XXXX YYYY は、XXXXを忠実にYYYYに置き換えて実行します。 貴方の書き方では、 #define start 1; #define stop 10; となってますので、if(No>=start && No<=stop) は、 if(No>=1;t && No<=10;)って解釈されちゃうことになります。(^^; つまり、;が余分なんですね。
お礼
なるほど、通りでエラーが多く出るわけです(苦笑) 回答ありがとうございました。
- a-kuma
- ベストアンサー率50% (1122/2211)
#define の行のケツからセミコロン ";" を取りましょう
お礼
教科書の熟読が足りませんでした。 やはりにわか知識が露呈したというか、精進が足りないというか・・・ 修行しなおします。 すぐに回答してくださったんですね。 本当にありがとうございました。
お礼
文章における"。"のようにほとんどお約束の条件反射のごとく、";"を記してしまったようです。 くだらないミスかもしれませんが、こんなミスからでもC言語の構造的な理解につながるという意味では、今回はよい教訓となりました。(笑) 丁寧なフォローをして頂いて恐縮しています。 皆さん、ありがとうございました!!