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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2011, 18:14   #1
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию Объявление переменных

Назрел вопрос,почему в книгах по С и С++ говорится о том,что все переменные объявляются до первой функции,хотя это не так
Сделал пару тестов
Код:
#include <iostream>
using namespace std;
int main(){
	int a=5;
	a=a*a;
	cout<<a<<"\n";
	int b=10;
	cout<<a+b<<"\n";
}
выводит то ,что и должен выводить 25 и 35

Первым предположением было то,что компилятор автоматом ставит объявление всех переменных в начало,но если так,то код ниже должен был бы работать нормально

Код:
#include <iostream>
using namespace std;
int main(){
	int a=5;
	a=a*a;
        cout<<b<<"\n";
	int b=10;
	cout<<a+b<<"\n";
}
но увы,переменная b в этом месте еще не объявлена

Почему в книгах пишут про объявление до первой функции?
Hemul вне форума Ответить с цитированием
Старый 05.02.2011, 18:23   #2
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
По умолчанию

мда...
Цитата:
говорится о том,что все переменные объявляются до первой функции
все переменные должны быть объявлены до первого их использования, что и демонстрирует ваш второй код, вот так вот внимательно читайте)
Ledom вне форума Ответить с цитированием
Старый 05.02.2011, 18:25   #3
pacniwassano
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 81
По умолчанию

попробуйте открыть замок, а открыв вставить в него ключ
pacniwassano вне форума Ответить с цитированием
Старый 05.02.2011, 19:19   #4
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

вы не сможете открыть замок не имея в руках объекта "ключ" :D
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 06.02.2011, 02:10   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Объявляй переменные где надо и когда надо. А что за книги? Небось старьё какое-то?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 06.02.2011, 02:42   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

лучше объявлять переменные в самом начале программы. Это ничего не даст в плане производительности, но просто легче будет искать потом ошибки.
NiCola999 вне форума Ответить с цитированием
Старый 06.02.2011, 04:03   #7
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Сомнительная практика. Лично я не соглашусь. Счётчики для for надо обавлять непосредственно внутри, временные переменные непосредственно перед тем, как они понадобятся, ... Какой смысл в одном месте всё объявлять?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 06.02.2011 в 04:12.
Obey-Kun вне форума Ответить с цитированием
Старый 06.02.2011, 05:10   #8
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от Hemul Посмотреть сообщение
Почему в книгах пишут про объявление до первой функции?
Просто есть глобальные, а есть локальные переменные. Локальные видны только внутри функции. А глобальные видны во всех функциях и классах, перед которыми они объявлены.
Это вопрос удобства. А когда всего одна функция, то тут без разницы...
An1ka вне форума Ответить с цитированием
Старый 06.02.2011, 13:18   #9
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
Счётчики для for надо обавлять непосредственно внутри, временные переменные непосредственно перед тем, как они понадобятся
счетчик, созданный в форе доступен только в нём. Всё равно если ты будешь писать каждый раз
Код:
for(int i=...) 
for(int i=...) 
.....
компилятор приведет его к виду:
Код:
int i;
for(i=...
for(i=...
NiCola999 вне форума Ответить с цитированием
Старый 06.02.2011, 14:08   #10
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от NiCola999 Посмотреть сообщение
счетчик, созданный в форе доступен только в нём. Всё равно если ты будешь писать каждый раз
Код:
for(int i=...) 
for(int i=...) 
.....
компилятор приведет его к виду:
Код:
int i;
for(i=...
for(i=...
вообще-то нет, при таком объявлении i не объявлена после цикла
alex_x_x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильное объявление глобальных переменных voam Microsoft Office Excel 5 14.05.2010 14:25
Как вынести объявление переменных в отдельный сегмент кода boris-blade Microsoft Office Word 1 16.01.2010 19:31
Объявление переменных на ВЕСЬ проект Alex Cones Общие вопросы Delphi 8 25.04.2009 22:09
объявление множества BESS Общие вопросы Delphi 7 07.08.2008 15:24