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

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

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

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

18.02.2014, 21:06. Просмотров 336. Ответов 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;
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 21:06     Оператор if и логическая операция И (AND) &&
Посмотрите здесь:

C++ Побитовая операция &
C++ Оператор &
C++ Побитовая операция &
C++ Изменение формата данных && работа с файлом
C++ Чем оператор || отличается от оператора && ?
Оператор && C++
Поразрядная операция & C++
C++ Оператор взятия адреса (&)
Почему оператор & выделывается? C++
Операция получения адреса & и vector C++
Nested classes && enum declaration C++
C++ Объяснить, что делает операция *& и чем она отличается от простого указателя?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
18.02.2014, 21:07     Оператор if и логическая операция И (AND) && #2
VladimirU, могу предположить, что компилятор оптимизирует второй код. Они будут равны.
VladimirU
125 / 103 / 18
Регистрация: 14.02.2013
Сообщений: 760
18.02.2014, 21:16  [ТС]     Оператор if и логическая операция И (AND) && #3
Да точно так и есть Megabar,.
ValeryS
Модератор
6451 / 4917 / 451
Регистрация: 14.02.2011
Сообщений: 16,313
18.02.2014, 21:23     Оператор if и логическая операция И (AND) && #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:
.............
v_krasnoselska
0 / 0 / 0
Регистрация: 06.10.2014
Сообщений: 7
06.10.2014, 23:15     Оператор if и логическая операция И (AND) && #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
castaway
Эксперт С++
4870 / 3009 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
06.10.2014, 23:36     Оператор if и логическая операция И (AND) && #6
Если не ошибаюсь, это называется short-circuit evaluation. Т.е. когда второе условие не проверяется, в случае если первое == false.
Yandex
Объявления
06.10.2014, 23:36     Оператор if и логическая операция И (AND) &&
Ответ Создать тему
Опции темы

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