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

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

Восстановить пароль Регистрация
 
Aqua77
4 / 4 / 1
Регистрация: 13.07.2015
Сообщений: 315
06.10.2015, 13:29     Логические выражения #1
Выражение 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++ логические выражения
Логические выражения C++
C++ Логические выражения
C++ Логические операции , выражения в С++
C++ ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ В C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kalonord
 Аватар для 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
4 / 4 / 1
Регистрация: 13.07.2015
Сообщений: 315
06.10.2015, 13:39  [ТС]     Логические выражения #3
Или вот пример. if((13%13)) Результатом будет 0, то есть лож. Но если добавить !(НЕ) if(!(13%13)), то результатом будет так же 0 но операция !(НЕ) сделает его 1 т.е. правда.
kalonord
 Аватар для 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
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.10.2015, 14:57     Логические выражения #9
Цитата Сообщение от gledor Посмотреть сообщение
Не не всегда срабатывает такое предупреждение.
Если ты юзаешь какой-то древний компилятор или специально давишь такие предупреждения, то конечно.
Цитата Сообщение от gledor Посмотреть сообщение
и предупреждения там банально не видно
Наверное, ты просто не умеешь их готовить. Или в проекте настолько много шлака (который надо бы разгрести, да влом), что полезные сообщения теряются в куче бесполезных.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2015, 15:00     Логические выражения
Еще ссылки по теме:

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

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

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

Текущее время: 04:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru