Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
ИМХО, выбирать надо то, что работает в большинстве случаев. [updated] 10.03.05 21:57 Число просмотров: 2295
Автор: Den <Denis> Статус: The Elderman Отредактировано 10.03.05 22:24 Количество правок: 2
|
> > > А никто и не собирался сравнивать с указателем > ;-P. > > > Выбирался более правильный из двух вариантов > > > (!ptr) и (ptr == NULL) > > Если > NULL — это > > (void *)0 , то ptr > ==
> > NULL — это как раз
> > сравнение с указателем :) > > Если б стандартом было #define NULL ((void*)0), то проверка > (ptr == NULL) была бы наглядной и логичной.
ИМХО, выбирать надо то, что работает в большинстве случаев.
Без разницы какое значение имеет NULL по стандарту. Это важно только для компилятора и кодера, но абсолютно не важно для готовой программы, так как и 0x00000000 и 0xffffffff (если бы последнее значение было принято стандартом для NULL) лежат в адресном пространстве проца (для 32-х битной модели памяти).
Кодер не должен помнить, как определяется тот или иной тип или константа и всего-навсего должен писать синтаксически правильный код, а все остальное на совести производителя компилятора.
Таким образом, синтаксически правильным, на мой взгляд является if (ptr == NULL), а не if (!ptr), потому что в последнем случае мы имеем неявное преобразование значения указателя к булевому типу и в этом случае уж точно никто не сможет гарантировать одинаковое вышеупомянутое преобразование во всевозможных Си-подобных компиляторах.
|
|
|