Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。c;c=100;←これは宣言と何でしょうか?あとextern宣言の必要性が分かりません...。public;という宣言と定義を複数のソースファイルで書いても全くエラーが出ません。これは何故なのでしょうか...?これはコンパイル側が都合よく解釈してくれているということなのでしょうか?初歩的な質問で申し訳ないのですがご教授頂けると幸いです。11:12違う話題のようですし別なトピックを作成していただけると幸いです。その際には具体的にどのようなコードを書いたか挙げてください。11:57すみません。調べて見たところ「仮定義」という用語を知り、自己解決しました。票3まずC言語とC++言語は異なる言語ですので正しく区別すべきです。関数内に記述する場合と関数外に記述する場合とで、意味が異なります。a;関数内の場合、ローカル変数の宣言と定義で、関数内(関数の実行中)でしか有効になりません。関数外の場合、グローバル変数の宣言と定義です。staticストレージクラスを指定すると宣言されたソースファイル内でしか有効になりません。externストレージクラスを指定するとグローバル変数を宣言だけしたこととなり、定義はされません。この場合、このグローバル変数を使用することはできますが、他所で定義されないことにはコンパイルエラー(正確にはリンクエラー)となり実行ファイルを生成することはできません。逆にexternなしで複数個所にわたってグローバル変数の定義と宣言を繰り返した場合もリンクエラーになります。a;のように宣言だけを行う必要があります。b=10;宣言と定義、それに加えて初期化をしてします。関数の内外どちらにも記述できます。c;c=100;1行目は宣言と定義です。2行目は代入で、関数外には記述できません。|2あとextern宣言の必要性が分かりません...。ついてですが、externな変数xxの宣言とは、この翻訳単位(ソース)にはその実体は存在しないのですが、とりあえず「あるという仮定でコンパイル」してくださいね。「リンク時にどっかのobjに見つかったらそれを使ってね」ということですね。必要性については、上記の通り「自身の翻訳単位外に実体のある変数を利用する方法」というわけです。|1正しくは以下になります。グローバル変数の場合の説明です。aという名前のint型の入れ物が作られます。aの値は環境により異なります。10;宣言と定義です。bという名前のint型の入れ物が作られます。bの値は10になります。100;宣言でも定義でもなく、代入です。しておく必要があります。c;c=100;←これは宣言と何でしょうか?宣言した変数(ここではc)に値の代入です。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。equeue_clampdiff()の実装について1プログラミングCの再帰に関しての質問です。1C言語の宣言・型の読み方を教えてください。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。