|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
||||||
Стенли Б. Липпман, преобразования в логическихвыражениях29.06.2021, 10:01. Показов 6859. Ответов 60
Метки нет (Все метки)
Из учебника:
при использовании значения типа bool в арифметическом выражении оно всегда преобразуется в 0 или 1. Я написал:
В то же время, если записать: i = 1.5 cout <<i; то выдаст 1 (здесь float преобразуется к int) Кто мне объяснит, почему в одном случае преобразование идёт, а в другом нет?
0
|
||||||
| 29.06.2021, 10:01 | |
|
Ответы с готовыми решениями:
60
Язык программирования С++. Вводный курс 4-е изд. Стенли Липпман[2007]
|
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
||
| 01.07.2021, 18:29 [ТС] | ||
|
Додел
Особый вопрос к Azazel-San, я так понимаю, к Саше: вы, я так понял, английским владеете. Мне здесь остаётся понять момент cptr = &dval; // ok: но изменить dval при помощи cptr нельзя Оба операнда - не константы. Почему нельзя изменить? Опять ошибка перевода?
0
|
||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||
| 01.07.2021, 18:41 | ||||||
|
Walex,
cptr - указатель на const double. Не стоит путать с константным указателем.Указатель на константу менять можно, но нельзя менять то на что он указывает. Константный указатель менять нельзя, но можно менять то на что он указывает.
0
|
||||||
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
| 01.07.2021, 18:52 [ТС] | |
|
Спасибо! Замечательно просто и понятно изложено! Мне осталось понять, что происходит при присвоении нового значения указателю на константу.
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
| 01.07.2021, 18:58 | |
|
Walex, а то и происходит, что при присвоении нового значения указателю на константу меняется, то на что он теперь будет указывать, вот и все.
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||||
| 01.07.2021, 19:56 | |||||||||
![]() "Сама константа" было бы так:
Однако, в учебнике вся эта информация есть (ошибки перевода - это конечно плохо и портят впечатление). Просто с этой информацией нужно уметь работать. А то получается вы прочитали главу, потом дошли до констант и забыли что такое объект, я сам это только что наблюдал у вас. Это никаким изложением не исправить. Пишите конспекты, это помогает. Записывайте ключевые тезисы (они выделяются в книге обычно), оставляйте закладки. Сразу же пробуйте писать код, который вам дают в примерах, даже если это пара строк. Нельзя просто взять и прочитать технический учебник как худ. литературу и все понять, это ни у кого не получается. Когда я учился, у меня не было таких хороших книг. У меня была одна единственная книга, которая даже не учебник, а скорее мемуары о языке, от его создателя, на английском (интернета, форумов тогда еще не было, а достать какую-то другую книгу было целым испытанием). Так что ваших претензий к самой книге я не поддерживаю. Перевод - да, местами хромает (как и у любой современной переводной литературы, к сожалению), хочется надеяться, что при перепечатке эти вещи исправляют.
1
|
|||||||||
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
||
| 01.07.2021, 21:24 [ТС] | ||
|
Что такое объект - я не забывал. но в коде, например, double *cptr = π - два объекта. И я упорно считал, что когда написано, что указатель указывает на объект, то это "pi". . Мне и в голову не приходило, что это может быть cptr. И в книге об этом разъяснений нет. Потом, наверное, всё станет на свои места. Но я сейчас не знаю, как воспринимать такую информацию.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 01.07.2021, 22:33 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
| 01.07.2021, 23:03 [ТС] | |
|
Тема сложна для восприятия. Безусловно, раз это общепризнанный учебник, то если по сусекам поскрести, по амбарам помести, то найдётся объяснение всему. Но почему, например, нельзя было, для начала, написать:
1 double val = 3.14; 2 double const* ptr_to_const = &val; // указатель на константу 3 double* const const_ptr = &val; // константный указатель 4 double new_val = 1.1; 5 ptr_to_const = &new_val; // OK 6 сonst_ptr = &new_val; // Нельзя 7*ptr_to_const = new_val; // Нельзя 8*const_ptr = new_val; // OK И на основе этого наглядного примера начать рассказывать все нюансы? Да ещё расширить пример, чтоб действительно, большая часть необходимого сюда вошла. Быть может, вы сразу поняли и запомнили разницу между константным указателем и указателем на константу, а я вот нет. Разница хорошо видна, только если свести всё вместе.
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 01.07.2021, 23:14 | ||
|
Walex, вообще предполагается, что вы делаете упражнения и практикуетесь после каждой темы.
Только так обучение будет эффективнее. Вам дают правила, которые вы должны применить, чтобы самому составить такой пример. На мой взгляд - это гораздо лучше. Я на этом форуме видел уже несколько случаев, где человек пытался пойти по вашему пути, в итоге он просто уперся в огромное количество комбинаций и сочетаний, которое не оставляет никаких шансов написать сколько-нибудь полный "наглядный пример". Старайтесь разбирать законы, по которым получаются все эти варианты, а не искать "наглядные примеры" с перечнем всех вариантов, их будет настолько много, что вы утонете в нюансах.
1
|
||
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
| 02.07.2021, 10:01 [ТС] | |
|
Пример из учебника:
const int ci = 42; // нельзя изменить ci; const верхнего уровня const int *p2 = &ci; // нельзя изменить p2; const нижнего уровня Разъясните мне этот момент, пожалуйста! Если бы написали: нельзя изменить *p2 - понятно. Нельзя изменить значение константы. Но p2 - это неконстантный адрес. Его почему менять нельзя? Добавлено через 17 минут P2 уже поменял. Явная опечатка. Можно не отвечать.
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2021, 10:08 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
| 02.07.2021, 10:09 [ТС] | |
|
Кто подскажет:
int *p = p3; // ошибка: p3 имеет const нижнего уровня, а p - нет Здесь константа копируется в неконстанту. В чём ошибка?
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 02.07.2021, 10:17 | |||
|
Не думал, что столько опечаток. Хочется верить, что это только потому, что электронная версия пиратская и сделана с ранних экземпляров книжки, а в печатном издании последних редакций это исправили. Добавлено через 7 минут Если указатель имеет const нижнего уровня (const указуемых данных), то скопировать его в указатель, который не имеет const нижнего уровня - нельзя. Это сделано для того, чтобы нельзя было неявно снять защиту неизменности указуемых данных с указателя/ссылки. Т.е. это такая идеология: дать const неконстантным данным через указатель неявно можно, а вот снять - нельзя.
2
|
|||
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
| 02.07.2021, 10:23 [ТС] | |
|
Спасибо за пояснение. Это на поверхности не лежало. Буду искать не пиратскую копию. А то, если не веришь учебнику, то подобные вещи автоматически считаешь опечаткой.
0
|
|
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
| 02.07.2021, 11:17 [ТС] | |
|
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,350
|
|
| 02.07.2021, 12:15 | |
|
А это сильно нужно: константные указатели, указатели на константы? И часто используется в программировании? Лишняя путаница только для новичков. Переменная есть переменная, она для того и придумана, что-бы её менять. Очень нужна константа - объяви её #define
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.07.2021, 12:29 | |
|
alexu_007, используется в профессиональном программировании постоянно, потому что это инструмент снижения сложности (сопровождения и совместной разработки).
Возможно автор не собирается участвовать в крупном проекте, или зарабатывать этим деньги (он не сообщал), но хотя бы разобраться, чтобы потом принять осознанное решение, что ему это не надо - нужно. Чужой код, например библиотечный, который он по-любому будет использовать, даже если просто ограничится домашними поделками, хотя бы надо уметь понимать.
1
|
|
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
||
| 02.07.2021, 12:40 [ТС] | ||
|
Заранее не завидую своему наставнику. Всегда считал себя занудой. Но сейчас, похоже, я попал в среду зануд по профессии, которые ни единой точки или чёрточки не оставят без внимания. Окажусь ли я достаточно занудным - не знаю.
0
|
||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,350
|
|
| 02.07.2021, 12:44 | |
|
0
|
|
| 02.07.2021, 12:44 | |
|
Лефоре или Липпман? Липпман или Шилдт Консультации.[Липпман/Лажойе] перегрузка операции ++ (Липпман) Изучение С++11: Липпман или Прата? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|