前提・実現したいこと
C言語を習いたての者です。
今、グローバル変数とローカル変数、そして記憶寿命について学んでいます。
この変数の定義に関して正しく理解したい、また理解を深めたいと考えています。
試した内容
if文で定義をするとどうなるかが気になり以下のコードのように試しました。
すると、グローバル変数で定義された変数bを、新たに関数内でローカル変数bとして定義したにもかかわらず、
関数内でインクリメントされた変数bはグローバル変数に対してでありました。
何故if文の外では適用されなくなるのか、それが面白く興味を持っております。
これを応用して何かしたいというわけではなく
プログラムの仕様を理解するために知りたいという所存です。
よろしくお願いいたします。
該当のソースコード
``、c++
コード
#include <stdio.h> int a = 0; int b = 0; void func(void) { if (a == 2) { int b = 6; printf("variable b is %d\n", b); } a++; b++; printf("variable a is %d, variable b is %d\n", a, b); } /* define function "main" */ int main(void) { int i; for (i = 0; i < 5; i++) { func(); } return 0; } ここに問題に対して試したことを記載してください。 検索をしたところほかの言語で似たような試みをしているのを見かけました。 しかし、その言語が読めず、また結論も理解ができませんでした。 ### 補足情報(FW/ツールのバージョンなど) 利用環境というものがよくわからないのですが、 visual stdio 2019を用いています。 ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/12 09:40