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

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

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

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

20.12.2011, 16:26. Просмотров 275. Ответов 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 ? Если можно поподробнее.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2011, 16:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему не происходит изменения (C++):

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

Почему происходит переполнение? - C++
Если диапазон float: -2 147 483 648.0 / 2 147 483 647.0, то почему происходит переполнение. Или это что-то другое? P.S.: тогда что...

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

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

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

потоки почему так происходит ? - C++
Господа делаю воспроизведение основной музыки в программе , а затем в отдельный поток делаю воспроизвеление другого звука , так вот звук...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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; }
вызываться не будут.
1
titans2011
297 / 258 / 43
Регистрация: 27.09.2010
Сообщений: 1,058
20.12.2011, 16:38  [ТС] #3
О, теперь понятно. Большое спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 16:38
Привет! Вот еще темы с ответами:

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

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

too few arguments to function. почему так происходит? - C++
всем привет, помогите разобраться с ошибкой #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;iomanip.h&gt; ...

Подскажите почему происходит ошибка в вычислении - C++
При введении следующих параметров (60 2.3 3) выходит ответ 4rub. 13cop. хотя должен выдавать 4rub. 14cop. , не могу разобраться почему...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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