Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Да... это я немного забыл ... ;)) от недостаточности.... 09.03.05 03:41 Число просмотров: 2529
Автор: void <Grebnev Valery> Статус: Elderman
|
> > Мне кажется, что и поэтому тоже, практика ( !ptr ) > была б > > чище. Меньше неопределённостей и зависимостей от > измений и > > дополнений в стандарты. Если только гарантритуется, > что > > отрицание любого ненулевого указателя результирует в > целый > > ноль (не знаю какой. скорее всего длинный L), то мы > сразу > > получаем в логическом выражении истину или ложь после > > единственно возможного преобразования. > Я могу ошибаться, но по-моему, отрицание любого указателя > автоматически ведёт к его преобразованию в bool (даже в > чистом C, по Стандарту 99 года) и после этого применению > отрицания. > > > Если же сравнивать с NULL, то вначале надо prt привети > к > > типу, например, void* (если NULL ((void*)0) ). > > Если же #define NULL 0, то в проверке ptr == NULL > указатель > > должен быть приведён к целому типу (какому целому? 0 > ничего > > не говорит о типе, поскольку это литера). > Ну здравствуйте, литеральный 0 — это > signed int, по определению. При записи же (ptr > == NULL) работает пункт стандарта, который
> постулирует, что любой указатель должен корректно проходить > проверку на равенство с любым целым нулём. Я понимаю, что > «корректно» — не > слишком точное слово, но Стандарта под рукой сейчас нет.
Да... это я немного забыл ... ;)) от недостаточности ... ну, сами знаете чего ;))
|
|
|