Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
#include <iostream>
int add(int x) {
static int total = 0;
total = total + x;
return total;
}
int main() {
int total = add(5);
std::cout << add(2) << ' ' << total << '\n';
}7 5
- Ждать
2 5:static-переменная инициализируется один раз, а не при каждом вызове, поэтому второй вызов прибавляет2к сохранённому значению5. - Ждать
7 7:staticменяет время жизниtotalвadd, а не область видимости, поэтомуtotalвmain— отдельная переменная.
- Как изменится вывод, если объявить
totalвaddбезstatic? - Безопасно ли вызывать функцию со
static-переменной из нескольких потоков одновременно?