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

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

Войти
Регистрация
Восстановить пароль
 
Сергей_Солопов
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 20
#1

Чем оператор || отличается от оператора && ? - C++

05.08.2013, 14:33. Просмотров 1110. Ответов 10
Метки нет (Все метки)

Приведите простые примеры, никак до мозгов не доходит)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dima55501
29 / 33 / 6
Регистрация: 14.07.2013
Сообщений: 146
05.08.2013, 14:36     Чем оператор || отличается от оператора && ? #2
Оператор && - логическое И, || - логическое или.
Например есть условие
if(a == 0 && b == 0)
выполнится тогда, когда и а, и b равны 0.

Если условие
if(a == 0 || b == 0)
выполнится, если или а, или b равно 0.
Spectral-Owl
561 / 541 / 49
Регистрация: 29.06.2010
Сообщений: 1,536
Завершенные тесты: 1
09.10.2013, 12:20     Чем оператор || отличается от оператора && ? #3
не забываем про логические операторы & и |, способ работы которых тоже чуток отличается от их "двойных собратьев"

пример:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int[] arr=new int[10];
            bool flag = false;
 
            Console.WriteLine("проверка оператора &&, нажмите любую клавишу");
            Console.ReadKey();
 
            try
            {
                if (flag && arr[15] == 1) ; //обращение к не существующему индексу, результат условия не интересует
                Console.WriteLine(" ..выполненно без ошибок");//выводится эта строка
            }
            catch  {  Console.WriteLine(" ..ошибока при проверке"); }//сюда не попадаем
 
            Console.WriteLine();
            Console.WriteLine("проверка оператора &, нажмите любую клавишу");
            Console.ReadKey();
 
            try
            {
                if (flag & arr[15] == 1) ; //обращение к не существующему индексу, результат условия не интересует
                Console.WriteLine(" ..выполненно без ошибок");//сюда не попадаем
            }
            catch { Console.WriteLine(" ..ошибока при проверке"); }//выводится эта строка
 
            Console.Read();


пояснение:
одиночные операторы (& и |) проверяют И левую, И правую часть условия, и уже потом возвращает значение логической операции.

двойные операторы (&& и ||) проверяют сначала левую часть условия, и если результата проверки достаточно для того чтоб вернуть результат, на правую даже не смотрят, ведь действительно если находится логическое И, то зачем проверять правую часть условия, если левая - false?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
09.10.2013, 12:51     Чем оператор || отличается от оператора && ? #4
Цитата Сообщение от Spectral-Owl Посмотреть сообщение
не забываем про логические операторы & и |
& и | не являются логическими операторами ни в коем разе. Это битовое И и битовое ИЛИ.
SatanaXIII
Супер-модератор
Эксперт С++
5589 / 2623 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 1
09.10.2013, 12:53     Чем оператор || отличается от оператора && ? #5
Цитата Сообщение от Spectral-Owl Посмотреть сообщение
не забываем про логические операторы & и |
Они побитовые.

Цитата Сообщение от Spectral-Owl Посмотреть сообщение
двойные операторы (&& и ||) проверяют сначала левую часть условия
Называется "ленивые вычисления".
Spectral-Owl
561 / 541 / 49
Регистрация: 29.06.2010
Сообщений: 1,536
Завершенные тесты: 1
09.10.2013, 13:53     Чем оператор || отличается от оператора && ? #6
Цитата Сообщение от ForEveR Посмотреть сообщение
& и | не являются логическими операторами ни в коем разе. Это битовое И и битовое ИЛИ.
хм... и скажите чем битовая операция И между логическими значениями (а именно логические значения являются частью условий) отличается от логической операции - конъюнкции? названием?)

по моему обозначать понятия необходимо по текущему функциональному применению, а не по изначально задуманному. ведь когда, к примеру, кореец съедает собаку - он же ест не друга и охранника, а всего-лишь блюдо) так и здесь:

int i = 12 & 7; - битовая операция
if (a & b); - логическая операция

хотя... это всего-лишь моё скромное ИМХО)
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
09.10.2013, 13:55     Чем оператор || отличается от оператора && ? #7
Spectral-Owl, Термины различные. По факту для булевых значений отличий действительно нет, кроме тех которые вы указали. Однако операторы & | в С++ являются Bitwise operators (bitwise and и bitwise or соответственно).
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
09.10.2013, 14:32     Чем оператор || отличается от оператора && ? #8
А где находятся эти самые биты, и как это проявляется в прграммировании?
Spectral-Owl
561 / 541 / 49
Регистрация: 29.06.2010
Сообщений: 1,536
Завершенные тесты: 1
09.10.2013, 14:43     Чем оператор || отличается от оператора && ? #9
о! ща как придумаю что-нибудь...

гхм! Биты - это элементарные частицы, которые находятся в ядрах атомов. Они нормализуют количество протонов и эллектронов, и изменяя значения битов можно заряжать молекулы... блин как то слишком бредово)

если без шуток, то ближайшее понятие к биту, на мой взгляд - цифра. только цифрами называют части числа в 10-чной системе, и соответственно цифры могут принимать всего 10 значений (от 0 до 9)
а бит - это эллемент числа в двоичной системе, и соответственно он может принимать только два значения (0 и 1).

про различные преобразования из одной системы в другую рассказывать не буду, открой калькулятор виндовый, в нём всё есть) или попроси у доблестных модераторов ссылку куда-нибудь в википедию)
Somebody
2781 / 1595 / 143
Регистрация: 03.12.2007
Сообщений: 4,179
Завершенные тесты: 1
09.10.2013, 16:07     Чем оператор || отличается от оператора && ? #10
Цитата Сообщение от Spectral-Owl Посмотреть сообщение
и скажите чем битовая операция И между логическими значениями (а именно логические значения являются частью условий) отличается от логической операции - конъюнкции? названием?)
Между логическими - ничем. Но в условиях же не только логические, но и другие, которые приводятся к логическим.
C++
1
2
3
int a = 1, b = 2;
if (a & b)
  std::cout << "i bet u use m$'s compiler";
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2013, 16:24     Чем оператор || отличается от оператора && ?
Еще ссылки по теме:

Как проверить, принадлежит ли символ заданному диапазону m...n, кроме if (c <= n && c >= m) ? C++
Почему оператор & выделывается? C++
Чем отличается оператор присваивания (=) от оператора сравнения (==)? C++
C++ Объяснить, что делает операция *& и чем она отличается от простого указателя?
C++ Порядок вычисления: операторы «|» и «||», «&» и «&&»

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

Или воспользуйтесь поиском по форуму:
Spectral-Owl
561 / 541 / 49
Регистрация: 29.06.2010
Сообщений: 1,536
Завершенные тесты: 1
09.10.2013, 16:24     Чем оператор || отличается от оператора && ? #11
Цитата Сообщение от Somebody Посмотреть сообщение
int a = 1, b = 2; if (a & b)
мне нельзя так делать, религия не позволяет =(
я обычно на шарпе кодю, а он не позволяет ставить в условия int значения) хз как я в этой ветке оказался "
Yandex
Объявления
09.10.2013, 16:24     Чем оператор || отличается от оператора && ?
Ответ Создать тему
Опции темы

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