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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
titans2011
296 / 257 / 43
Регистрация: 27.09.2010
Сообщений: 1,058
#1

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

20.12.2011, 16:26. Просмотров 273. Ответов 2
Метки нет (Все метки)

Вот такой простой примерчик.
Код
#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++
Если диапазон float: -2 147 483 648.0 / 2 147 483 647.0, то почему происходит переполнение. Или это что-то другое? P.S.: тогда что...

Почему происходит утечка? - C++
Проверяю через vld #include&lt;iostream&gt; #include&lt;vld.h&gt; using namespace std; int main() { char *st = new char; cin &gt;&gt;...

Почему происходит утечка памяти? - C++
Добрый день, форумчане! Прошу помощи в вопросе - есть функция своп. void swap(CustomVector&lt;T&gt;&amp; in) throw() { ...

Почему происходит остановка цикла? - C++
Подскажите почему при заполнении массива строками длиной от 5 символов, происходит остановка цикла? И как это можно исправить? ...

Почему не происходит запись в файл? - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include &lt;string&gt; using namespace std; int main() { string temp; string...

Почему не происходит ввод? (cin) - C++
Здравствуйте. Скажите, пожалуйста, почему нету приглашения ввести переменную s? int main() { cout&lt;&lt;&quot;Enter digits, for exit...

Почему происходит выход за границы? - C++
2 игрока берут из своих колод по 1-й карте. Т.е. достают элемент дека из начала дека. Так происходит, пока колода одного из игроков не...

Почему то ничего не происходит в скомпилированной программе - C++
Почему то ничего не происходит в скомпилированной программе ошибок компилятор не нашел ,но никаких значений на экран не выводит в программе...

Почему происходит ошибка времени выполнения? - C++
прошу помощи в поиске ошибки! уже 2часа пытаюсь найти и никак... Тоже задание по структуре. над ошибкой уже 2 час сижу не могу понять...

почему не происходит разыменования нулевого указателя? - C++
вот думаю, почему сия конструкция не вылетает: #define offsetof(type, member) (size_t)(&amp;(((type*)nullptr)-&gt;member))... видимо не происходит...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3586 / 1366 / 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
296 / 257 / 43
Регистрация: 27.09.2010
Сообщений: 1,058
20.12.2011, 16:38  [ТС]     Почему не происходит изменения #3
О, теперь понятно. Большое спасибо.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru