|
15 / 15 / 3
Регистрация: 04.02.2013
Сообщений: 124
|
||||||||||||
Что плохого в явном написании условия в if?28.06.2015, 12:37. Показов 4705. Ответов 78
Метки нет (Все метки)
0
|
||||||||||||
| 28.06.2015, 12:37 | |
|
Ответы с готовыми решениями:
78
Просьба помочь разобраться в написании проверки условия. Что означает объявить элемент в явном виде? Нарушение стека в RunDll32. Что плохого случится? |
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 28.06.2015, 17:44 | |
|
castorsky, до появления в стандарте bool каждая кучка программистов так или иначе реализовывала этот тип. Кто-то через перечисления, кто-то через число, кто-то через класс. Из-за этого при совместном использовании получалась адская путаница. Для того, чтоб договориться, и был введен bool. Заодно чувачки проанализировали кучу кода С++ и выяснили, что в подавляющем большинстве реализаций bool свободно конвертируется в int и обратно. Поэтому не стали ломать существующую ситуацию и разрешили неявные преобразования.
0
|
|
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 28.06.2015, 20:26 | |
|
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 28.06.2015, 22:44 | ||
|
А появился в C++ тип bool когда появились визуальные редакторы. Это единственное его применение - задание диапазонов ручного ввода посредством RTTI.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||||
| 29.06.2015, 00:10 | ||||||||
Вот теория: 4/2
http://rextester.com/TISS75398 http://rextester.com/MPKNZQ7125 Добавлено через 7 минут
0
|
||||||||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
||||||||
| 29.06.2015, 00:43 | ||||||||
|
Вот наличие булева типа в языке
0
|
||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||
| 29.06.2015, 04:21 | ||||||
|
Добавлено через 8 минут Я говорю о том, что if и iteration statements требуют приводимости выражения к bool. Не к int и ни к чему-то другому, а именно к bool. И вот это
1
|
||||||
| 29.06.2015, 07:54 | |||
Укажите, какой из операндов (или выражение в целом) имеет тип bool? Конверсия (причем, неявная - на платформе, где false есть нуль, компилятор никаких приведений к bool выполнять не будет) возникает именно в момент сравнения результата вычисления выражения с нулем. Что, собственно, и было стартовой точкой.
0
|
|||
| 29.06.2015, 08:09 | ||||||||||||
0
|
||||||||||||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 29.06.2015, 08:26 | |
|
Предлагаю всем подумать над следующим тезисом: "Всё, что выглядит, как утка, и крякает, как утка, то и есть утка".
Существует ли такая конструкция на C++, которая принимается компилятором над bool и отвергается над целыми числами (явно указан числовой тип переменной) 1 и 0?
0
|
|
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
| 29.06.2015, 11:27 | |
|
DrOffset, mporro, а я предлагаю обсудить следующее:
Чисто гипотетически представим себе что мы волшебным образом убрали из языка haskell (и многих других) логический тип. Теперь посмотрим какие особенности языка мы потеряли. В случае с haskell мы потеряли возможность логического ветвления в программе. Теперь нам недоступны if_then_else и частично pattern matching. Теперь также представим себе что мы волшебным образом изъяли из языка c++ тип bool. Какие возможности языка мы потеряли?
0
|
|
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 29.06.2015, 13:12 | |
|
castorsky
Не очень удобно оперировать понятием "потеряли возможность". Если кто-то вырезал у нас bool, разве мы не в состоянии задать сами тип из двух значений True и False и задать правила для выражения if_then_else? Разница именно в том, что в Haskell if_then_else определено таким образом, что правила над if_then_else ясны только для True и False. И наш исполнитель должен впасть в ступор, если вместо False подставить 0. У него просто нет правил для такого выражения. В С++ для встроенной конструкции if () {} else {} можно, как мне кажется, сказать, что она редуцируется по правилу: совпадение с нулём -> else, во всех остальных случаях первый блок. Логического типа просто нет, так как правила для выражение if () {} else {} уже определены через целочисленный аргумент. По-моему так.
0
|
|
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|||
| 29.06.2015, 13:30 | |||
|
0
|
|||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
||
| 29.06.2015, 14:09 | ||
|
И тип bool, который бы добавлял ключевые слова true и false к Си, был определённым запросом C-программистов. На самом деле если прочесать исходники на Си, то макро-определения BOOL и FALSE будут встречаться частенько. Иметь, пусть и целочисленный и синонимичный, тип bool просто удобно с точки зрения чтения исходного кода. Ввести специальный "логический тип" над конструкцией if () {} else {}, понятно, нельзя -- разрушится C-совместимость. Вот Страуструп и предложил вариант выхода. Не понимаю, почему такой подход стоит осуждать столь сильно.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 29.06.2015, 14:17 | |||
|
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||||||||
| 29.06.2015, 14:21 | |||||||||||||
Объяснение поведения, к которому апеллирует риторика в последних сообщениях уже дано было давно bool - это интегральный тип. И для него применимы все операции, которые применимы для других интегральных типов (хотя использование ++ и -- на данный момент является deprecated). Добавлено через 3 минуты
2
|
|||||||||||||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||
| 29.06.2015, 14:30 | |||
|
В конкретно рассматриваемом случае чем меньше символов тем читабельней код, тем меньше вероятность нелепой ошибки, тем меньше долбить по клавиатуре. Неужели нужны еще недостатки?
0
|
|||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|||
| 29.06.2015, 14:57 | |||
|
Может быть можно было обойтись отображением целых чисел? Совершенно не важно кто конкретно начал внедрять явно bool в реализацию C++. Главное, что bool -- это запрос программистов. И описание bool появилось у Страуструпа до явного принятия стандарта. Если бы все конструкции над char принимались бы int, но существовали бы конструкции, отвергаемые для char и принимаемые для int, то мы бы говорили о том, что int расширяет char. Но из-за неявных преобразований таких конструкций нет. Так как int мы может всегда привести к char, то наличие такой конструкции привело бы к противоречию в языке. Получается, что над char и int верны ровно одни и те же конструкции. Потому различить эти объекты по поведению мы не можем совершенно. В этом и проблема слабой типизации. Тип вроде бы и есть, и мы знаем, что представление различается, но по поведению различить не можем, что саму типизацию уже нивелирует. Другое дело, что переходя на уровень представления, мы, всё же, можем различить char и int. Так что для указателей мы уже имеем разное поведение и разные классы в смысле Рассела, и можем говорить о различных типах.
0
|
|||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|||||
| 29.06.2015, 15:01 | |||||
|
0
|
|||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 29.06.2015, 15:13 | |||||||
|
Только вот товарищ castorsky почему-то уверен Добавлено через 9 минут ![]()
0
|
|||||||
| 29.06.2015, 15:13 | |
|
Что плохого в 2 partial classes в одном файле? Объясните мне, что же такого плохого в goto? что плохого если я делаю ф-ю main типа void При явном приведении к int получаются числа, но явно не те, что должны быть При перекомпиляции сервера перекомпилируется клиент, а что, собственно в этом плохого? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|