Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 313

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
У меня вот такой вопрос: чем отличается "0" и nil ?
Спасибо.

IlluminatI Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: IlluminatI (статус: 2-ой класс)
Вопрос отправлен: 4 февраля 2008, 12:27
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Feniks

Здравствуйте, IlluminatI!
Отличный вопрос и номер его тоже !!! :))
Это классический вопрос по программированию. У нас в универе его часто преподаватели задавали.
"0" - это цифра. ;-)
"nil" - это указатель на нулевую область, ну или что-то в этом духе.
Применять надо в зависимости от условий использованной функции.

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 4 февраля 2008, 13:47

Ответ #2. Отвечает эксперт: Вадим К

Здравствуйте, IlluminatI!
"0" - это не цифра, это строка, состоящая с одного символа, так как записана в кавычках. но 0 как число - и есть 0.
nil - это нулевой указатель. на платформах x86 внутреннее представление как раз и есть 0. но на других платформах это может и не быть так. Единственное что гарантируется, что адрес, куда указывает nil есть память, которая не может быть доступной ни одному приложению. По этому адресу нельзя писать/читать.
Делфи не даёт сравнивать указатели и числа между собой без принудительного приведения типов. А в С/С++ - это обычная практика. Мало того, многие программисты наивно верят, что integer(nil) равно 0, чем и расплачиваются при переходе на другие платформы. И если на x86 чтение/запись по нулевому адресу приведёт к исключению, которое можно даже обработать, то к примеру под Палмом это призведёт до перегрузки устройства.

Из вышеперечисленного следует, что для Делфи программиста "0" , 0 и nil три разные вещи. и путать их не стоит.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 4 февраля 2008, 22:33
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 5 февраля 2008, 09:59; участников в обсуждении: 1.
Feniks

Feniks (статус: Бакалавр), 5 февраля 2008, 09:59 [#1]:

Вадим К, я в кавычка написал специально, что бы выделить нуль из текста. ;-)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:02
Выполнено за 0.02 сек.