void foo() { static int x = 5; x++; printf("%d", x); } int main() { foo(); foo(); return 0; }
چی در خروجی چاپ میشه؟ 6 6 یا 6 7؟
خروجی 7 6 خواهد بود، چرا که متغیر استاتیک تنها یک بار مقداردهی اولیه میشه، قبل از اینکه هیچ تابعی در واحد ترجمه اجرا بشه. و بعد از اون مقدار خودش رو حفظ میکنه تا اینکه یه جایی تغییر کنه.