|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.12.2011, 02:59 | #41 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Все понятно) Спасибо большое, за консультацию)
Итого резюмируя: память, выделяемая процессу изначально заполнена нулями. А статическая память, в отличие от стековой - гарантированно заполнена нулями, за исключением тех областей, которые заполняются данными, которые программист инициализировал явно (константы всякие и прочее). Но сама по себе глобальная переменная себя явно-дефолтно не инициализирует. Она тупо смотрит на область памяти, которая содержит ноль. Никаких специальных конструкторов для глобальных переменных не предусмотрено. Капитан! Продолжаем наше плаванье дальше! |
24.12.2011, 15:23 | #42 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Стандарт гарантирует, что все глобальные переменные будут zero-initialized. И компилятор обязан делать это в независимости от особенностей ОС. Чаще всего это реализовано в compile-time.
|
24.12.2011, 15:27 | #43 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
и они это делают. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
24.12.2011, 15:54 | #44 |
Пользователь
Регистрация: 19.12.2011
Сообщений: 65
|
интересно, я когда-нибудь буду такой умной?
вот, переделанный вариант, но, например, при 50 делает лишний круг. Код:
Последний раз редактировалось ACE Valery; 26.12.2011 в 17:52. |
24.12.2011, 16:32 | #45 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
ITTI, Кэп! Проблема не столько с самим кодом, сколько с постановкой задачи.
"загаданное число больше 50?" Если я загадал как раз таки 50, как я могу ответить на этот вопрос? Естественно, что 50 не больше 50, значит я отвечают "нет", и начинается угадывание. При такой постановке задачи, 1 круг поисков будит делаться в любом случае /ps не хочешь иметь проблем с неициализированными переменными - инициализируй их всегда ЯВНО. Код:
|
24.12.2011, 16:40 | #46 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
24.12.2011, 16:50 | #47 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
2. Функции, принимающие в качестве аргумента ссылку на данные могут поиметь крэш, если объекты не инициализированы. Дебаг в студии обычно кричит "попытка поюзать без инициализации", релиз - поведение не определено. 3. Что бы не иметь проблем, проще один раз приучить себя сразу инициализировать данные, и навсегда забыть о "нюансах". |
|
24.12.2011, 18:16 | #48 |
Пользователь
Регистрация: 19.12.2011
Сообщений: 65
|
|
24.12.2011, 19:23 | #49 |
Пользователь
Регистрация: 19.12.2011
Сообщений: 65
|
как можно инициализировать вектор, если на этом этапе конструктор я не изучала?
|
24.12.2011, 19:28 | #50 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
Ну ) самое простое, что ты тут можешь сделать - дописать последней строчкой цикла
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
PopupMenu со мной не дружит | Жигилий_Ульяна | Компоненты Delphi | 5 | 25.12.2008 11:04 |
проблемы с select или со мной... | smoke888 | JavaScript, Ajax | 2 | 23.09.2008 19:02 |