|
Вопрос # 1 313/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
У меня вот такой вопрос: чем отличается "0" и nil ?
Спасибо.
 |
Вопрос задал: 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 (статус: Бакалавр), 5 февраля 2008, 09:59 [#1]:
Вадим К, я в кавычка написал специально, что бы выделить нуль из текста.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|