• ベストアンサー

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; のように代入で使用しているのですが、そこではなにも問題がありません。 いったい何が間違っているのか、どのようにすればうまくいくのかを教えていただきたいと考え、書き込ませていただきました。 皆様、どうぞよろしくお願いします。

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

  • ベストアンサー
  • gimmick
  • ベストアンサー率49% (134/270)
回答No.3

皆さんがおっしゃられているとおり、セミコロンが余分です。#defineはプリプロセッサに対する命令であって、コンパイラによって処理されるわけではありません。ですから、C言語の文法にのっとって文末に";"を付ける必要はないのです。うっかり";"を付けると意図しない動作をするので気をつけましょう。

参考URL:
http://www.e-words.ne.jp/view.asp?word=%83v%83%8A%83v%83%8D%83Z%83b%83T
maruchan432
質問者

お礼

文章における"。"のようにほとんどお約束の条件反射のごとく、";"を記してしまったようです。 くだらないミスかもしれませんが、こんなミスからでもC言語の構造的な理解につながるという意味では、今回はよい教訓となりました。(笑) 丁寧なフォローをして頂いて恐縮しています。 皆さん、ありがとうございました!!

その他の回答 (2)

  • Brown2002
  • ベストアンサー率32% (24/74)
回答No.2

define XXXX YYYY は、XXXXを忠実にYYYYに置き換えて実行します。 貴方の書き方では、  #define start 1;  #define stop 10; となってますので、if(No>=start && No<=stop) は、  if(No>=1;t && No<=10;)って解釈されちゃうことになります。(^^; つまり、;が余分なんですね。

maruchan432
質問者

お礼

なるほど、通りでエラーが多く出るわけです(苦笑) 回答ありがとうございました。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

#define の行のケツからセミコロン ";" を取りましょう

maruchan432
質問者

お礼

教科書の熟読が足りませんでした。 やはりにわか知識が露呈したというか、精進が足りないというか・・・ 修行しなおします。 すぐに回答してくださったんですね。 本当にありがとうございました。