Почему статическая переменная инициализируется только один раз?

Я заметил, что если вы инициализируете статическую переменную в C ++ в коде, инициализация выполняется только при первом запуске функции.

Это круто, но как это реализовано? Это переводит на какое-то искаженное выражение if? (если задано значение, то .. )

void go( int x )
{
    static int j = x ;
    cout << ++j << endl ; // see 6, 7, 8
} 

int main()
{
    go( 5 ) ;
    go( 5 ) ;
    go( 5 ) ; 
}
46
задан Vadim Kotov 2 August 2018 в 12:47
поделиться