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

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

Войти
Регистрация
Восстановить пароль
 
VladimirU
125 / 103 / 18
Регистрация: 14.02.2013
Сообщений: 777
#1

Оператор if и логическая операция И (AND) && - C++

18.02.2014, 21:06. Просмотров 354. Ответов 5
Метки нет (Все метки)

Вод подскажите что будет быстрей обрабатываться процессором:

C++
1
2
3
4
if(!a&&!b)
{
a+b;
}
или

C++
1
2
3
4
5
6
7
if(!a)
{
if(!b)
{
a+b;
}
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 21:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оператор if и логическая операция И (AND) && (C++):

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;) - C++
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A { ...

Чем оператор || отличается от оператора && ? - C++
Приведите простые примеры, никак до мозгов не доходит)

Не выполняется логический оператор && - C++
Добрый день. В данном коде #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstdlib&gt; using namespace std; int main(){ ...

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9& - C++
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура...

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
18.02.2014, 21:07 #2
VladimirU, могу предположить, что компилятор оптимизирует второй код. Они будут равны.
0
VladimirU
125 / 103 / 18
Регистрация: 14.02.2013
Сообщений: 777
18.02.2014, 21:16  [ТС] #3
Да точно так и есть Megabar,.
0
ValeryS
Модератор
6634 / 5041 / 466
Регистрация: 14.02.2011
Сообщений: 16,852
18.02.2014, 21:23 #4
Цитата Сообщение от VladimirU Посмотреть сообщение
Вод подскажите что будет быстрей обрабатываться процессором:
одинаково
чтобы понять это нужно вспомнит как ведет себя && если первое ложь(0) то второе не вычисляется
удобно проверять деление
C++
1
if(a && b/a)
никогда не будет деления на 0


в результате
если а не равно 0 то выходим
если равно проверяем b
если не ноль то выходим
иначе суммируем 0+0 вопрос зачем?
как видишь по шагам точно тоже самое что и вторая конструкция

Добавлено через 3 минуты
Цитата Сообщение от Megabar Посмотреть сообщение
что компилятор оптимизирует второй код.
оптимизирует он как раз первый приведет примерно к такому виду
Assembler
1
2
3
4
5
6
7
and eax,eax
jnz exit
and ebx,ebx
jnz exit
add eax,ebx
exit:
.............
1
v_krasnoselska
0 / 0 / 0
Регистрация: 06.10.2014
Сообщений: 7
06.10.2014, 23:15 #5
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
26
27
#include <iostream>
using namespace std;
 
int main()
{
    int x, y;
    cout << "Vvedite x: ";
    cin >> x;
    if ((x >= 2) || (y*y!=4))
    {
     y =-x; // выполняется, если х меньше нуля
    } else
           {
             if ( (x >= 0) && (y*y > 4) )
             {
                y = x; // выполняется, если х больше либо равно нуля и меньше 30
             } else
                     {
                       if ((x*y!=4) && (y>x))
                       {
                        y = x/2 ; // выполняется, если х больше либо равен 30
                       }
                     }
           }
    cout << "y=" << y << endl;
    system("pause");
    return 0;
Объясните в чём ошибка "конец файла обнаружен ранее, чем левая фигурная скобка". Вот условие задания. Написать программу, позволяющую вывести на экран значения следующих логических выражений:а)х>=2 или y^2 не равно 4, при х=2 и у=-2;б)х>=0 и y^2 >4, при х=2 и у=2;в)х*у не равно 4 и у>x, при х=1 и у=2
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
06.10.2014, 23:36 #6
Если не ошибаюсь, это называется short-circuit evaluation. Т.е. когда второе условие не проверяется, в случае если первое == false.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2014, 23:36
Привет! Вот еще темы с ответами:

Оператор && - C++
В C# при использовании оператор &amp;&amp;, если первая операция будет false, то проверка второй операции не выполняется. А как записать на С++...

Оператор && - C++
&amp;&amp;- что это значит ?

Порядок вычисления: операторы «|» и «||», «&» и «&&» - C++
В Java булевые операторы «|» и «||», и «&amp;» и «&amp;&amp;» отличаются друг от друга порядком вычеслений, а в C++ так же как и в Java или...

Побитовая операция & - C++
Даны два массива с числами в десятичной системе счисления, разделенные пробелами. Нужно реализовать побитовую операцию &amp; сравнивающую...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.10.2014, 23:36
Ответ Создать тему
Опции темы

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