| 
| 
 | Вопрос # 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]:Вадим К, я в кавычка написал специально, что бы выделить нуль из текста.   |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |