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

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

Войти
Регистрация
Восстановить пароль
 
Aqua77
25 / 25 / 16
Регистрация: 13.07.2015
Сообщений: 430
#1

Логические выражения - C++

06.10.2015, 13:29. Просмотров 393. Ответов 9
Метки нет (Все метки)

Выражение if((13/13)) - Результатом будет 1. Это выражение считается правдой, так как ответ отличается от нуля.
Если же if(!(13/13)) - Результатом также будет 1(правда). Но знак !(НЕ) делает его ложью.

То есть:
if(!(11/13))- лож.
if(!(12/13))- лож.
if(!(13/13))- правда.


Верно понимаю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2015, 13:29     Логические выражения
Посмотрите здесь:

Логические выражения - C++
Выдать на экран значение true или false в зависимости от того является ли введённое число х положительным или нет. Вот что у меня...

Логические выражения - C++
double ko; do { cout << "Для однослойной обмотки обмоточный коэффицент равен 0.96, для двуслойной обмотки 0.92:"; cin >>...

Логические выражения - C++
При любом раскладе даже когда С не равно А*В, оно считывает как правильно, в чем проблема? cout << "Что-бы продолжить введите...

Написать логические выражения - C++
программа,выводящая на экран значение следующих логических выражений(значение переменных вводятся с клавиатуры) a) не А или не В; б) А...

Сравнить два введенных числа, не используя логические выражения - C++
Здравствуйте ! Дали задачу, не знаю как сделать не используя условия, прошу помощи в решении: Даны числа X и Y, если X в 2 раза больше Y...

Логические выражения - программа на следующий день просто перестала работать - C++
Помогите пожалуйста разобраться. Такая ситуация: вначале написал не полную программу( не все здания), откомпелировал, она работала. На...

Логические операции (Логические &&, ||) (Побитовые &, |) - C++
Здравствуйте! Имеется вопрос. К примеру, когда пишут вот так : ... if(i>5 && j>5) ... if(i>5 || j>5) ... Тут все понятно, в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kalonord
26 / 26 / 3
Регистрация: 27.01.2014
Сообщений: 767
06.10.2015, 13:38     Логические выражения #2
Цитата Сообщение от Aqua77 Посмотреть сообщение
if(!(11/13))- лож.
if(!(12/13))- лож.
if(!(13/13))- правда.
1 - правда
2 - правда
3 - ложь

Добавлено через 1 минуту
Вообще, ты можешь скомпилировать всё это и сам посмотреть.

Добавлено через 1 минуту
11 / 13 = 0.
12 / 13 = 0.
13 / 13 = 1.
Aqua77
25 / 25 / 16
Регистрация: 13.07.2015
Сообщений: 430
06.10.2015, 13:39  [ТС]     Логические выражения #3
Или вот пример. if((13%13)) Результатом будет 0, то есть лож. Но если добавить !(НЕ) if(!(13%13)), то результатом будет так же 0 но операция !(НЕ) сделает его 1 т.е. правда.
kalonord
26 / 26 / 3
Регистрация: 27.01.2014
Сообщений: 767
06.10.2015, 13:42     Логические выражения #4
Цитата Сообщение от Aqua77 Посмотреть сообщение
сделает его 1 т.е. правда.
Да. Именно так.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Aqua77 Посмотреть сообщение
лож
Ложь. На будущее

Tulosba
06.10.2015, 14:25
  #5

Не по теме:

Цитата Сообщение от kalonord Посмотреть сообщение
Ложь.
Не "ложь", а "клади"

gledor
37 / 23 / 9
Регистрация: 12.08.2015
Сообщений: 154
Завершенные тесты: 1
06.10.2015, 14:37     Логические выражения #6

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
клади
Не клади а положи



Вообще, операцией НЕ (!) надо очень аккуратно пользоваться, потому что не всегда легко разглядеть логику действия. И лучше писать явно.

Добавлено через 9 минут
Я бы написал так:

C++
1
if (0 == 11/13)
Так очень хорошо видно, что мы пытаемся сделать. А литеральные константы, с которыми мы сравниваем if, лучше писать слева. Чтобы случайно не спутать оператор сравнения (==) с оператором присвоения (=). Потому что в обратном случае, ошибки компиляции не возникнет, а логика if станет непредсказуема, + ввиду беспалевности, ошибку трудно выявить.

А так - да, ты все понял верно!
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.10.2015, 14:43     Логические выражения #7
Цитата Сообщение от gledor Посмотреть сообщение
Чтобы случайно не спутать оператор сравнения (==) с оператором присвоения (=)
Компиляторы уже давно выдают предупреждения на такие случаи, так что все эти Yoda condition не имеют особого смысла на сегодняшний день.
gledor
37 / 23 / 9
Регистрация: 12.08.2015
Сообщений: 154
Завершенные тесты: 1
06.10.2015, 14:52     Логические выражения #8
Цитата Сообщение от Tulosba Посмотреть сообщение
Компиляторы уже давно выдают предупреждения на такие случаи, так что все эти Yoda condition не имеют особого смысла на сегодняшний день.
Предупреждают. Не не всегда срабатывает такое предупреждение. Тем более, что только в Qt система предупреждений хорошо проработана, и они хорошо отвлекают на себя внимание. Со своим опытом общения с Visual Studio, могу сказать, что окошко статуса компиляции засорено огромным количеством информации. и предупреждения там банально не видно. Код компилится, а предупреждение "тонет" в каше однотипных сообщений сохранения, линкования, компиляции и т.д. Одна надежда, что посмотришь на результат, увидишь количество предупреждений, перекопаешь весь вывал информации в логе, найдешь строку ( а если не подключишь нумерацию строк - это труба) и исправишь. Это драгоценное время и нервы.

А я - как новичок, еще и часто не справляюсь с потоком информации во время компиляции" Так что для новичков - это полезно. По своему опыту скажу.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.10.2015, 14:57     Логические выражения #9
Цитата Сообщение от gledor Посмотреть сообщение
Не не всегда срабатывает такое предупреждение.
Если ты юзаешь какой-то древний компилятор или специально давишь такие предупреждения, то конечно.
Цитата Сообщение от gledor Посмотреть сообщение
и предупреждения там банально не видно
Наверное, ты просто не умеешь их готовить. Или в проекте настолько много шлака (который надо бы разгрести, да влом), что полезные сообщения теряются в куче бесполезных.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2015, 15:00     Логические выражения
Еще ссылки по теме:

Логические вычисления - C++
Arg1 = 0x1234 Arg2 = 0xff ~nArg1 = 0xffffedcb ~nArg2 = 0xffffff00 nArg1 ^ nArg2 = 0x12cb (~nArg1 = 0xffffedcb )0x1234 в...

Логические операторы - C++
Верно ли уж так на все 100%, что выполнение логических операций по укороченной схеме заведомо эффективнее, нежели чем безусловное...

UB и логические операторы - C++
Является ли следующее выражение UB???? ptr != 0 && *ptr++ нужно рассмотреть 2 варианта: 1) ptr - нулевой указатель 2) ptr не...

Логические выражение - C++
Не могу уловит логику логичесих операторов. А выучит что они делают не могу (не могу запомнит то чего не понимаю). Пример. Логичесий...

Логические операции - C++
Если есть условие: m =(n+2) или k = (n+4), и выполняетcя и первое и второе (n=2, m=4, k=6), то результат истина или ложь?


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

Или воспользуйтесь поиском по форуму:
gledor
37 / 23 / 9
Регистрация: 12.08.2015
Сообщений: 154
Завершенные тесты: 1
06.10.2015, 15:00     Логические выражения #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Наверное, ты просто не умеешь их готовить. Или в проекте настолько много шлака (который надо бы разгрести, да влом), что полезные сообщения теряются в куче бесполезных.
Разумеется. И в этом причина тоже. Поэтому для новичков такое написание облегчит им жизнь на этапе постигания языка и компилятора)
Цитата Сообщение от Tulosba Посмотреть сообщение
Если ты юзаешь какой-то древний компилятор или специально давишь такие предупреждения, то конечно.
В смысле, не срабатывает из-за человеческого фактора.
Yandex
Объявления
06.10.2015, 15:00     Логические выражения
Ответ Создать тему
Опции темы

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