Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Раньше был int, и указатель для выполнения логического... 09.03.05 19:55 Число просмотров: 2273
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
> Наверное всё же не совсем так. Во-первых, в изначальном Си > я вообще не помню, что бы был как-то явно определён bool. Раньше был int, и указатель для выполнения логического отрицания приводился к int.
> На практике проверка > любого условия - это JMP куда-то. Нужем этот самый JMP или > нет проверяется исходя из флагов. Ты знаешь, многие условия до этапа трансляции в ассемблерный код могут просто не дожить.
> Видимо, сравнение с NULL это что-то вроде: > > CMP ptr, 0; здесь перед нулём > ;при необходимости надо дописать > ;dword ptr или что требуется - > ;я так понимаю, что компилятор это решает > ;ещё до компиляции и не суть важно, что там > ;написано - NULL или "0" > JE destination Компилятор совершенно не обязан трактовать if (ptr) именно так.
> В случае же отрицания указателя должно быть так (по идее): > > NOT ptr > CMP ptr, 0 > JNE destination А вот совсем не факт, что по идее должно быть так. Хотя бы потому, что NOT ptr — это, извините, какое отрицание, логическое разве?
> Ну а как именно определён NULL - чёрт его знает. Скорее > всего, как мне кажется, точно я не могу утверждать, - это > решается ещё до построения экзешника исходя из соображений > оптимизации. Это было бы самым рациональным. Гы, это решается ещё до запуска компилятора, я тебе по секрету скажу :)
> Ну а в MSDN написано: NULL is the null-pointer value used > with many pointer operations and functions. Это описание > (от и до) именно для Си. Видимо, даже в мелкософте точно не > могут сказать, как оно устроено :) Вообще-то MS до недавнего времени был довольно слабым авторитетом в отношении C/C++. С учётом того, что приличный компилятор у них появился лишь в 21 веке.
|
|
|