|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.12.2010, 08:09 | #1 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Локальные переменные
Почему локальные переменные нельзя объявлять следующим образом?
Код:
|
22.12.2010, 08:11 | #2 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,206
|
А как это отрицательно сказывается на работе кода?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
22.12.2010, 08:45 | #3 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
По-моему и так логично. То что предлагаете Вы это шаг в сторону динамической типизации. Нафига писать -
Код:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
22.12.2010, 09:01 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Код:
p.s. кстати, в языке C# этой проблемы нет! Может стоит потихонечьку на него переползать?... |
|
22.12.2010, 09:04 | #5 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
22.12.2010, 09:12 | #6 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Ни почему. Просто не сделано. Face it.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
22.12.2010, 09:16 | #7 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
В корне неверное рассуждение. Дельфи наследник Паскаля, а каждая возможность (или недостаток) там обоснована, почитайте труды его автора.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
22.12.2010, 09:28 | #8 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
"Я так думаю" ©
Просто так писать удобнее. Да и где логика? Почему глобальные переменные при объявлении сразу запоняются (по умолчанию нулями), а локальные нет. Должно же быть логическое объяснение.
Предполагаю, это связано с тем, что глобальные переменные инициализируются воизбежание некоторых ошибок (когда новички забывают их инициализировать), а так как это делается 1 раз для каждой переменной, это совершенно не накладно. Сомнительная "защита от дурака", ибо, если бы обнуления не происходило, новичку было бы проще обнаружить ошибку. Она бы чаще возникала и это было бы видно по явно неадекватным результатам. Хотя опять же, Delphi разрешает, но придупреждает. А вот с локальными переменными другая ситуация. Они могут по 100000 раз инициализироваться, а следовательно их обнуление накладно. Поэтому при объявлении происходит только процедура выделения памяти, а следовательно компилятору некуда пихать "= 1". i: Integer {GetMem} = 1{некуда пихать}; Хотя, неужели было так сложно при компиляции проверять, есть ли "= Х" и, если есть, еще и скопировать Х в переменную. Цитата:
Кстати, это именно в C# или в Си вообще? Последний раз редактировалось Sibedir; 22.12.2010 в 09:41. |
|
22.12.2010, 09:35 | #9 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Насколько я помню локальные переменные размещаются в стеке, и каждый раз инициализировать их накладно.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
22.12.2010, 09:50 | #10 | |||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Особенно в Delphi не обоснованы классы, генерики и цикл for in. К теме инициализации локальных переменных относится и case для строк. Их нет не потому, что это служит высшей цели, а потому, что это синтаксический сахар, делающий жизнь чуть удобнее. Но на всё надо силы и время, поэтому пока никто не почесался это сделать. Вот и ответ. Просто не сделали. Цитата:
Но если с технической точки зрения... просто все глобальные переменные размещаются в отдельном сегменте исполняемого файла, который автоматически обнуляется при старте программы загрузчиком ОС. Т.е. это даже не язык, а ОС. Причём, это почти везде так, не только в Windows. Цитата:
Код:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переменные экземпляра,класса, константы и переменные | cop08 | Общие вопросы .NET | 3 | 20.12.2010 21:56 |
Глобальные и локальные переменные | Kapitann | JavaScript, Ajax | 2 | 03.08.2010 14:24 |
Как обычно делаются такие локальные переменные в методах классов? | Oleg_SK | Общие вопросы C/C++ | 8 | 11.07.2010 04:09 |
Локальные и глобальные переменные. | Proger10 | Общие вопросы Delphi | 1 | 04.05.2009 05:55 |
Локальные минимумы и их номера. | f4rr3l | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 06.01.2009 21:51 |