Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 22:18   #1
Lotles
Пользователь
 
Регистрация: 02.10.2010
Сообщений: 86
По умолчанию область видимости переменных

Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
int main(){
	for(int i = 0;i<10;i++){
		cout << i << endl;
	}//переменная i уничтожилась
	cout << i << endl; //почему выводится i, она же уничтожилась ?
}
Lotles вне форума Ответить с цитированием
Старый 30.11.2010, 08:34   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,831
По умолчанию

Сто раз объясняли! Освобождение памяти - это фактически пометка мендежором памяти участка, что он свободен. То, что туда никто не записал пока - случай.

П.С. И выбросьте этот компилятор. Мой на такой кричит...
p51x вне форума Ответить с цитированием
Старый 30.11.2010, 09:58   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
П.С. И выбросьте этот компилятор. Мой на такой кричит...
Вот меня как раз больше всего удивило, что оно вообще скомпилировалось. Ну а раз выводится - то и леший с ним, код не мой, проблемы не мои...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 30.11.2010, 10:04   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

По старому стандарту область видимости переменной, объявленной в цикле for, не была ограничена этим циклом.
Возможно у ТС старый компилятор. У меня (VS 2010) не компилируется
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 30.11.2010, 12:38   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И давно cout находится в <conio.h>?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2010, 12:56   #6
pproger
C++ hater
Старожил
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

просто старый стандарт. даже gcc может откомпилировать такой код с ключом -fpermissive

Цитата:
Сто раз объясняли! Освобождение памяти - это фактически пометка мендежором памяти участка, что он свободен. То, что туда никто не записал пока - случай.
вообще не в кассу камент
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 30.11.2010, 13:10   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас Visual C++ 6.0?
советую выкинуть. в нем есть такое, сам долго не понимал(после 2008 студии надо было на шестерке писать)

Цитата:
вообще не в кассу камент
учитывая что переменная локальная.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 30.11.2010 в 13:12.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.11.2010, 16:09   #8
Lotles
Пользователь
 
Регистрация: 02.10.2010
Сообщений: 86
По умолчанию

Microsoft Visual Studio .NET 2003
Lotles вне форума Ответить с цитированием
Старый 30.11.2010, 21:06   #9
Lotles
Пользователь
 
Регистрация: 02.10.2010
Сообщений: 86
По умолчанию

Даный пример на современном компиляторе как ведет подскажите?
Область видимости переменной ограничено только блоком или еще и самим циклом?
Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
int main(){
	for(int i = 0;i<10;i++)
		cout << i << endl;
	cout << i << endl;// Здесь выдает ошибку или нет?
}
Lotles вне форума Ответить с цитированием
Старый 30.11.2010, 22:22   #10
oleg.v
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 80
По умолчанию

Ошибка. НЕ комплиться такой код.
oleg.v вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Область видимости массива Серж_ PHP 2 03.11.2010 00:14
Публичная область видимости Бутаков_Сергей Общие вопросы Delphi 1 20.04.2010 09:02
область видимости Dimarik Общие вопросы .NET 5 21.02.2010 21:32
область видимости переменных. С++ Prestigio Помощь студентам 10 07.07.2008 15:55
область видимости ? artem779 Общие вопросы Delphi 3 14.09.2007 09:34