Форум программистов, компьютерный форум CyberForum.ru

Почему не происходит изменения - C++

Восстановить пароль Регистрация
 
titans2011
293 / 254 / 43
Регистрация: 27.09.2010
Сообщений: 1,058
20.12.2011, 16:26     Почему не происходит изменения #1
Вот такой простой примерчик.
Код
#include <iostream>
using namespace std;

static int a = 0, b = 3;

int change_a() { return ++a; }
int change_b(int x) { return b+=x; }

void func(int x)
{

	static int aa = change_a();
	static int bb = change_b(x);

}

int main()
{
	func(1); 
	cout << a << " " << b<<endl;	
	func(3); 
	cout << a << " " << b<<endl;	
	func(5); 
	cout << a << " " << b<<endl;	
	func(9);
	cout << a << " " << b<<endl;
	return 0;
}
вопрос, почему всегда будет выводится 1 4 ? Если можно поподробнее.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2011, 16:26     Почему не происходит изменения
Посмотрите здесь:

потоки почему так происходит ? C++
C++ Подскажите почему происходит ошибка в вычислении
C++ Перегрузка оператора.Почему так происходит?
C++ Почему не происходит ввод? (cin)
too few arguments to function. почему так происходит? C++
Почему не происходит запись в файл? C++
Почему происходит утечка памяти? C++
Почему происходит выход за границы? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.12.2011, 16:37     Почему не происходит изменения #2
Потому что 12 и 13 строчка выполнится один раз (при первом вызове функции func)

Добавлено через 2 минуты
Результат зависит, что передаете в 19-ой строчке. Все следующие вызовы функции func не привядут к созданию переменный aa и bb, следовательно функции
C
1
2
int change_a() { return ++a; }
int change_b(int x) { return b+=x; }
вызываться не будут.
titans2011
293 / 254 / 43
Регистрация: 27.09.2010
Сообщений: 1,058
20.12.2011, 16:38  [ТС]     Почему не происходит изменения #3
О, теперь понятно. Большое спасибо.
Yandex
Объявления
20.12.2011, 16:38     Почему не происходит изменения
Ответ Создать тему
Опции темы

Текущее время: 18:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru