макроса NULL вместо 0 в Си? Какой в этом смысл?
Это всё костыли, правильный NULL в С++ называется nullptr. 0L - это long, 0 - int. В 64 битах, наверное, лонг тоже 64, а инт всегда 32 (кроме некоторых embedded систем, где может быть меньше).
Понял. А что нам даёт 64-й лонг на 64-х битных системах и чего не даёт 32-й инт?
разрядность указателя = разрядность платформы. Инициализация 64-битного указателя 32-битным нулем может вызвать ворнинг при строгих настройках.
да ладно) пример есть?
Интересная версия : ) Однако сомневаюсь, что а) размер указателя строго равен разрядности платформы, б) происходит инициализация указателя вообще
нет, я теоретизирую, зачем кому-то было важно сделать нулл лонгом)
Древняя совместимость с древними инструментами. Ты можешь почитать по тому как много вариантов всяких signed int long long и прочих радостей существует в стандарте
На одной из 5 основных платформ натыкался ещё недавно, что size_t и uint64_t - разные типы (в 64 битах). Потому что один long, а другой long long. Пришлось под этот size_t доп перегрузки писать под SFINAE.
Раньше инт был не 32 битным и у большинства людей Лонг был только 32битным Потому припысывали
Обсуждают сегодня