- ベストアンサー
C言語 キーワードとは??
プログラミング初心者です。 初歩的な質問ですがよろしくお願いいたします。 現在C言語入門書を読んでいるのですが、「キーワード」と言うのが理解出来ません。 また当該入門書ではキーワードについて 「キーワードとは C 言語が仕様レベルで予約済みの名前のことで、前回のプログラムで紹介した return などはキーワードに属します。」と記載されていいますが理解出来ません。 初心者ですので、例え話なども用い解説してくれれば幸いです。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 予約語とキーワードは同義語なのでしょうか? 厳密な意味では同義ではありません。 キーワードの方が予約語よりも範囲が広いです。 例えばC言語で標準に用意されている関数があります。 これらの関数名とか変数名はキーワードではありますが予約語ではありません。 例えば、freadとかfwrite、これらの関数名は予約語ではありませんから、 プログラマが自分の関数名などに使うことが出来ます。 しかしキーワードとして重要なので、まずどこでも使ってはならない、と コーディング規約などで定められる対象です。 「出来るコト」と「すべきコト」は違う訳です。 またコンパイルやリンクを行う時に、コンパイルオプションやリンクオプションが あります。 これらはコーディングとは関係が無いようですが、経験上それらのキーワードを 使うと妙なエラーが生じるとことがあると思っています。
その他の回答 (4)
- KEIS050162
- ベストアンサー率47% (890/1879)
私も古い人間なので、予約語 と言った方がしっくり来ます。(K&Rの和訳本では予約語と書いてあった気がします。) 厳密には、キーワードと予約語は異なる概念の様ですが、”C言語の入門書”と記載しているので、同じ意味と思っておいても良いでしょう。 様は、言語の仕様で予約されているので、プログラムを書く時に、任意の意味で使用することが出来ない文字列ということです。 関数名や変数名に、 if とか、def とか、C言語で決まった意味を持った文字列、ということですね。 コンパイラは、文字列をひとつひとつ解読していく訳ですから、コンパイラが予約語を解読すると、予め定められた翻訳ルールに従って、プログラムを構築していきます。なので、プログラマが任意にこの予約後を使ってしまうと、コンパイラはプログラマが何をさせたいのか分からなくなってしまい、解読不能となってしまいます。
お礼
お返事遅れてしまい申し訳有りません。 詳細に渡り回答してくださりありがとうございました。 大変助かりました。
補足
ご回答ありがとうございます。 お返事遅れて申し訳ありません。 では逆に言えばユーザーが任意で名前を指定出来るトークン以外はキーワード(予約語)と解釈してよろしいでしょうか? また私の解釈が間違っている場合は指摘をお願いいたします。
- Tacosan
- ベストアンサー率23% (3656/15482)
「予約語とキーワードは同義語なのでしょうか?」と質問する前に調べようとは思いませんでしたか?
補足
調べてみて分からない為質問しています。 また自分が理解したと思っても一歩間違えれば独自解釈になってしまう為、自分の考えが正しいのか確かめ為にも質問をします。 まず、この場で質問をすると言う事は一般的に多少は自分で調べたと言う前提があると思いませんか?
- Tasuke22
- ベストアンサー率33% (1799/5383)
自分が作った関数の関数名とか、 自分が作った変数の変数名などは、自分で自由に名前が付けられます。 但し、特定のワードはC言語にとって意味があるので、自分が付ける名前には使えません。 そのようなワードを予約語とかキーワードという訳です。 returnやifやwhileなど沢山あります。 但し、return_100とか予約語に他の文字を付け足すと、予約語とは見なされません。 つまり、 int return; →これは予約語を変数名に使ったエラーとなります。 int retutn_100; →これは予約語ではないのでエラーになりません。 但し、return_100などの変数名はセンスが無い、と申し上げておきます。 あくまでも引き合いに出しただけです。 なお、c言語に限らず、殆どの言語には予約語が存在します。
補足
回答ありがとうございます。 もう一つだけお願いいたします。 回答者様が回答して下さった内容に「予約語」と言う言葉が有ります。 予約語とキーワードは同義語なのでしょうか?
- mk48a
- ベストアンサー率56% (1133/2007)
あまり意識したことはないですが。 http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89_%28C%E8%A8%80%E8%AA%9E%29 予約されているワード、つまり「変数・関数名には使えない」くらいにおもっておけば良いかも。
お礼
ご回答ありがとうございます。 大変助かりました。
お礼
お返事遅れて申し訳有りません。 詳細に渡り回答してくださりありがとうございます。 大変助かりました。