変数のスコープについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
conori

変数のスコープについて

#1

投稿記事 by conori » 1年前

#include <stdio.h>

int a = 1;

void sub1(int);
void sub2();

int main()
{
int b = 2;

sub1(b);

printf("%d\n" , b);

return 0;
}

void sub1 (int c)
{
sub2();
printf("%d\n" , c);
}

void sub2()
{
printf("%d\n" , a);
}


で何故printf("%d\n" , a);が最初に実行されるのでしょうか?何故このコードは全部下から実行されるのでしょうか

box
記事: 2002
登録日時: 13年前

Re: 変数のスコープについて

#2

投稿記事 by box » 1年前

変数のスコープとは全然関係ないです。
関数の呼び出し・実行順は
1)mainの先頭でsub1を呼んでいる。
2)sub1の先頭でsub2を呼んでいる。
3)sub2でaの値を出力している。
4)sub1に戻り、cの値を出力している。
5)mainに戻り、bの値を出力している。
ってだけです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る