Nope, a
имеет локальный объем (обозначается между скобками), поэтому в закрывающей скобке он будет очищен.
Если вы хотите, чтобы он сохранялся для всей программы, объявите его как static
или поместите его вне любых фигурных скобок, желательно, прежде чем использовать его.
Это имеет дополнительное преимущество в том, что компилятор инициализирует его для вас.
Вы можете попробовать следующее:
#include <stdio.h>
int a;
int main()
{
static int b;
int c;
printf("%d, %d, %d\n", a, b, c); /* a and b should print 0, printing c is undefined behaviour, anything could be there */
return 0;
}
Как Вирсавия отметил, static
переменные должны использоваться разумно, если они используются в многопоточной среде.
Это зависит от фактической реализации. Тем не менее его объем закончился, поэтому вы больше не можете получить к нему доступ, и компилятор может (и, скорее всего, будет) использовать свою резервную память для другой переменной. –
О, и *** 'int' ***' main() '... –
@Mr Carbonic Acid; + Google_plex. Сколько раз мы видим void main()! – Bathsheba