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

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

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

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

18.08.2008, 10:32. Просмотров 3005. Ответов 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 и немного философию программирования (C++):

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

Не работает код: m_web1.Navigate ('gidro.htm',0,0,NULL,NULL); - C++
Друзья помогите начинаюшему значит делаю m_web1.Navigate ('с:\gidro.htm',0,0,NULL,NULL);работает делаю m_web1.Navigate...

Компьютер для программирования и немного графики - Рабочая станция
помогите подобрать комп в диапазоне до 25000 рублей для программирования(чтобы visual studio 2013 и embarcadero rad studio xe5 ,при...

Блин, для ЧЕГО НУЖНА Функция CREATE TABLE invoice( inv_id INT AUTO_INCREMENT NOT NULL , usr_id INT NOT NULL , prod_id INT NOT NULL , quantity INT NOT - MySQL
Погуглив, так и не смог толком понять. Есть тут ГУРУ по mysql Которые могут на пальцах или на примере показать для чего она нужна. ...

В наушник попало немного воды и он стал немного тише играть - Наушники
В наушник попало немного воды и он стал немного тише играть. Это практически не заметно, но всё же раздражает. Так это пройдет со временем...

Обсуждаем и выбираем планшет - Планшеты, ebook
Перемещено из http://www.cyberforum.ru/tablet-pc/thread1264241.html вот насчет звонить, а как с 8" звонить? Разница вроде не большая ,...

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

Обсуждаем старое железо - Компьютерное железо
По поводу: Буквально на днях сплавил антиквариат с системкой: pentium III 600 Mhz, ОЗУ PC-133 190 Mb (128 и 64), видеокартой 3dfx...

Обсуждаем Вирусо-производителей! - Безопасность
Предлагаю обсудить производителей вирусов. У меня к Вам, как к более опытным пользователям ПК, есть несколько вопросов. 1) Все мы...

Софтфон OpenSource. Обсуждаем - C#
Всем Доброго. Хочу сделать собственный софтфон на ПК. (да, Вы правы велосипед, но хочется запускать свое). Искал OpenSource проектов,...

Чипсет INTEL G41 (Обсуждаем) - Материнские платы
Предлогаю обсудить чипсет INTEL G41 кто жилает Собственно тема обстоит в следующим, значит надо купить плату на 775 сокет, и выбор...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.08.2008, 11:54
Ответ Создать тему
Опции темы

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