English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

为什么在C / C ++中将全局变量和静态变量初始化为其默认值?

Le variabili globali e statiche vengono inizializzate ai loro valori di default, poiché si trovano nei standard C o C ++ e possono essere assegnati a zero liberamente durante la compilazione. Il comportamento delle variabili statiche e globali è lo stesso del codice obiettivo generato. Queste variabili vengono assegnate nel file .bss e, al caricamento, allocano memoria tramite l'ottenimento dei costanti assegnate alle variabili.

Ecco un esempio di variabili globali e statiche.

Esempio

#include <stdio.h>
int a;
static int b;
int main() {
   int x;
   static int y;
   int z = 28;
   printf("The default value of global variable a: %d", a);
   printf("\nThe default value of global static variable b: %d", b);
   printf("\nThe default value of local variable x: %d", x);
   printf("\nThe default value of local static variable y: %d", y);
   printf("\nThe value of local variable z: %d", z);
   return 0;
}

Risultato di output

The default value of global variable a: 0
The default value of global static variable b: 0
The default value of local variable x: 0
The default value of local static variable y: 0
The value of local variable z: 28

Nell'above programma, le variabili globali sono dichiarate inmain()Dichiarato al di fuori della funzione, e uno di essi è una variabile statica. Sono stati dichiarati tre variabili locali, e la variabile z è anche inizializzata.

int a;
static int b;
...
int x;
static int y;
int z = 28;

sarà stampato il suo valore predefinito.

printf("The default value of global variable a: %d", a);
printf("\nThe default value of global static variable b: %d", b);
printf("\nThe default value of local variable x: %d", x);
printf("\nThe default value of local static variable y: %d", y);
printf("\nThe value of local variable z: %d", z);