Форум программистов, компьютерный форум CyberForum.ru

Обсуждаем стандарт C++, NULL и немного философию программирования - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.64
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
18.08.2008, 10:32     Обсуждаем стандарт C++, NULL и немного философию программирования #1
CheshireCat,
http://www.rsdn.ru/?Forum/Info/FAQ.cpp.null.aspx
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2008, 10:32     Обсуждаем стандарт C++, NULL и немного философию программирования
Посмотрите здесь:

Стандарт ANSI C++
C++ Не работает код: m_web1.Navigate ('gidro.htm',0,0,NULL,NULL);
Что значит стандарт ANSI C++ C++
C++ Стандарт языка С++
C++ Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc?
C++ Реально ли понять стандарт C++ на английском?
Стандарт C++ поддержка Concepts и Reflection C++
C++ Правила перегрузки функций. Ткните в стандарт
C++ Push_back и стандарт С++
Какой MVS поддерживает с++11 стандарт? C++
C++ Аналог класса bitset (Стандарт C++11)
C++ Переделать код под стандарт C++98

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,314
18.08.2008, 11:02     Обсуждаем стандарт C++, NULL и немного философию программирования #2
Разумеется, я читал сообщение по ссылке, - когда-то давным-давно...
И тем не менее, Стандарт нигде не гарантирует корректность обратного преобразования, т.е. NULL -> 0. Последние три строки сообщения по приведенной тобою ссылке как раз об этом. Если тебе известна такая гарантия - приведи ссылку на пункт Стандарта, плз.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
18.08.2008, 11:14  [ТС]     Обсуждаем стандарт C++, NULL и немного философию программирования #3
Стандарт - штука замечательная,не спорю Но с моей точки зрения,язык должен служить мне,а не я ему.Полное согласование кода со стандартом,возможно,полезно, но смахивает на фанатизм. Если я точно знаю,что те компиляторы,с которыми я работаю,переваривают эту информацию известным мне образом, не вижу смысла себя сдерживать. Правда,для этого случая,я использую NULL только для указателей,а типу char вместо '\0' присваиваю 0. Мне так нравится.
Извини,если в очередной раз выдам баянистую ссылку,но все же интересно отношение : http://www.getinfo.ru/article40.html
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,314
18.08.2008, 11:52     Обсуждаем стандарт C++, NULL и немного философию программирования #4
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Но с моей точки зрения,язык должен служить мне,а не я ему.Полное согласование кода со стандартом,возможно,полезно, но смахивает на фанатизм. Если я точно знаю,что те компиляторы,с которыми я работаю,переваривают эту информацию известным мне образом, не вижу смысла себя сдерживать. Правда,для этого случая,я использую NULL только для указателей,а типу char вместо '\0' присваиваю 0. Мне так нравится.
Это не только тебе так нравится, это - правильно.
Что же касается соображений относительно фанатизма и "не вижу смысла себя сдерживать".... Могу привести такое соображение: если ты железобетонно уверен, что твой код будет всегда работать только на одной жестко определенной модели "железа", только под одной конкретной версией ОС, и компилироваться будет только и всегда лишь только одним жестко определенным компилятором точно известной версии, - то да, такой подход оправдан. Но это, главным образом, характерно для проектов-однодневок по принципу "сделал и забыл". Если же твой код должен будет работать на разном "железе", компилироваться разными компиляторами и жить еще сколько-то лет, - то ситуация в корне меняется. И вот однажды, через сколько то лет, ты "выдергиваешь" из старого проекта кусок кода в несколько тысяч строк, вставляешь его в новый проект, - и этот новый проект магическим образом перестает компилироваться, или, что еще хуже, начинает загадочно и непредсказуемо "падать"... Зачем же самому себе сначала старательно раскладывать грабли, а потом бессонной ночью сидя в отладчике гадать: "Черт, а что же случилось? Ведь все же работало!!!"
Касательно "интервью" Страуструпа - широко известная шутка.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
18.08.2008, 11:54  [ТС]     Обсуждаем стандарт C++, NULL и немного философию программирования #5
Вот,что говорит стандарт :
null pointer constant is an integral constant expression(5.19) rvalue of integer type that evaluates to zero. A null pointer constant can be converted to a pointer type; the result is the// null pointer value // of that type and is distinguishable from every other value of pointer to object or pointer to function type. Two null pointer values of the same type shall compare equal. The conversion of a null pointer constant to a pointer of cv-qualified type is a single conversion,and not the sequence of a pointer conversion followed by a qualificantion conversion
Что мы имеем. NULL - это null pointer constant(буду писать NPC,хе-хе). NPC - это целая константа,определяемая значением ноль.NPC можно конвертировать в нужный тип указателя,получив значение нулевого указателя для данного типа,которое в свою очередь определяется платформой. То есть,фактически,
если мы присваиваем значение NULL не указателю, мы присваиваем левой части ноль. Если мы присваиваем NULL указателю,присваивается нужное значение "null pointer value". Так написано.

Добавлено через 1 минуту 53 секунды
P.S null pointer value выделил слэшами для наглядности,там,естественно,такого нет
Yandex
Объявления
18.08.2008, 11:54     Обсуждаем стандарт C++, NULL и немного философию программирования
Ответ Создать тему
Опции темы

Текущее время: 22:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru