как работают статические переменные внутри функций?

В следующем коде:

int count(){
    static int n(5);
    n = n + 1;
    return n;
}

переменная n создается только один раз при первом вызове функции.

Должен быть флаг или что-то в этом роде, чтобы он инициализировал переменную только один раз .. Я попытался посмотреть сгенерированный ассемблерный код из gcc, но не понял.

Как компилятор с этим справляется?

15
задан jpalecek 12 October 2011 в 13:26
поделиться