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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.64
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
#1

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

18.08.2008, 10:32. Просмотров 2999. Ответов 4
Метки нет (Все метки)

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 и немного философию программирования
Посмотрите здесь:

Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc? - C++
По УМОЛЧАНИЮ при динамическом выделении, если не хватает памяти, возвращается NULL или bad_alloc? Так и не нашел конкретного ответа....

Как называется движение программирования или теория программы считывающая др. язык программирования - C++
Не знал, как по другому задать вопрос, и также назвать тему, но буду краток: Допустим я хочу создать программу, которая будет...

Push_back и стандарт С++ - C++
vector<int> vA; vA.push_back(s); В случае, если в vA нет свободного места, выделяется новое, старые данные перемещаются в новую...

Стандарт языка С++ - C++
Можно ли данный документ считать стандартом языка С++?

Переделать код под стандарт C++98 - C++
с++ переделать код под стандарт с++98 #include <iostream> #include <vector> #include <tuple> #include <cmath> typedef...

Что значит стандарт ANSI C++ - C++
Вот в книге Харви Дейтел написано:-" В этой книге дается введение в программирование на той версии языка С++ , которая...

Реально ли понять стандарт C++ на английском? - C++
Народ всем привет вот шас скачал стандарт плюсов на инглише и хочу спросить если я буду переводить его ну например через гугл я его пойму...

Какой MVS поддерживает с++11 стандарт? - C++
Изучаю С++ 11 cтандарт. А установил Microsoft Visual Studio 2008.

Аналог класса bitset (Стандарт C++11) - C++
Нужно создать аналог класса Bitset (стандарт C++11) Самому удалось раскопать следующее: //default (1) constexpr bitset()...

Стандарт C++ поддержка Concepts и Reflection - C++
Собственно вопрос, когда будет поддержка Concepts и Reflection? Или в новом стандарте опять откажутся от их поддержки, как это было в...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
18.08.2008, 11:02     Обсуждаем стандарт C++, NULL и немного философию программирования #2
Разумеется, я читал сообщение по ссылке, - когда-то давным-давно...
И тем не менее, Стандарт нигде не гарантирует корректность обратного преобразования, т.е. NULL -> 0. Последние три строки сообщения по приведенной тобою ссылке как раз об этом. Если тебе известна такая гарантия - приведи ссылку на пункт Стандарта, плз.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
18.08.2008, 11:14  [ТС]     Обсуждаем стандарт C++, NULL и немного философию программирования #3
Стандарт - штука замечательная,не спорю Но с моей точки зрения,язык должен служить мне,а не я ему.Полное согласование кода со стандартом,возможно,полезно, но смахивает на фанатизм. Если я точно знаю,что те компиляторы,с которыми я работаю,переваривают эту информацию известным мне образом, не вижу смысла себя сдерживать. Правда,для этого случая,я использую NULL только для указателей,а типу char вместо '\0' присваиваю 0. Мне так нравится.
Извини,если в очередной раз выдам баянистую ссылку,но все же интересно отношение : http://www.getinfo.ru/article40.html
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
18.08.2008, 11:52     Обсуждаем стандарт C++, NULL и немного философию программирования #4
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Но с моей точки зрения,язык должен служить мне,а не я ему.Полное согласование кода со стандартом,возможно,полезно, но смахивает на фанатизм. Если я точно знаю,что те компиляторы,с которыми я работаю,переваривают эту информацию известным мне образом, не вижу смысла себя сдерживать. Правда,для этого случая,я использую NULL только для указателей,а типу char вместо '\0' присваиваю 0. Мне так нравится.
Это не только тебе так нравится, это - правильно.
Что же касается соображений относительно фанатизма и "не вижу смысла себя сдерживать".... Могу привести такое соображение: если ты железобетонно уверен, что твой код будет всегда работать только на одной жестко определенной модели "железа", только под одной конкретной версией ОС, и компилироваться будет только и всегда лишь только одним жестко определенным компилятором точно известной версии, - то да, такой подход оправдан. Но это, главным образом, характерно для проектов-однодневок по принципу "сделал и забыл". Если же твой код должен будет работать на разном "железе", компилироваться разными компиляторами и жить еще сколько-то лет, - то ситуация в корне меняется. И вот однажды, через сколько то лет, ты "выдергиваешь" из старого проекта кусок кода в несколько тысяч строк, вставляешь его в новый проект, - и этот новый проект магическим образом перестает компилироваться, или, что еще хуже, начинает загадочно и непредсказуемо "падать"... Зачем же самому себе сначала старательно раскладывать грабли, а потом бессонной ночью сидя в отладчике гадать: "Черт, а что же случилось? Ведь все же работало!!!"
Касательно "интервью" Страуструпа - широко известная шутка.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
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 и немного философию программирования
Ответ Создать тему
Опции темы

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