0

i = 2 という答えが返ってきました。私の理解によると、i=0 は DATA SEGMENT になります I=2 は STACK SEGMENT になります

#include <stdio.h>
int i = 0;
void main()
{
    int i = 2;
    printf("i value is %d\n",i);`
}
4

5 に答える 5

6

ローカル変数iはグローバル変数を隠しますi。したがって、それを印刷すると、ローカル変数が印刷されます。

グローバル変数を変更する場合は、次のアイデアを使用できます。

Cでシャドウされたグローバル変数にアクセスするにはどうすればよいですか?

于 2013-10-03T09:31:18.033 に答える
3

シャドーイング。グローバル変数i = 0は local によって隠されていi = 2ます。

名前の衝突を避けてください。

ところで、void main() {}は標準 C ではありません (プログラムがホスト環境、つまり OS 上で実行されていると仮定します)。int main(void) { return 0; }代わりに使用してください。参照。 もう一つ。

于 2013-10-03T09:37:09.660 に答える
0

グローバル変数と同じ名前のローカル変数を宣言し、i(ローカル変数が宣言されているのとまったく同じスコープ内で使用された場合) グローバル変数ではなくローカル変数を参照するようにして非表示にしました。

これに対する最も自然で論理的な解決策は、次のとおりです。可能な限り常に実行しないでください。

于 2013-10-03T09:32:58.847 に答える