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

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

Войти
Регистрация
Восстановить пароль
 
Петр91
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
#1

Как называется условие if (!x) {} и как оно работает? - C++

21.04.2014, 12:48. Просмотров 589. Ответов 19
Метки нет (Все метки)

Добрый день, как называется условие if (!x) {} и как работает?
Если x вернет true, то x "выполнится" иначе сработает условие в скобках?
И главный вопрос, как сделать несколько таких условий? if (!x && !y) {} не работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 12:48     Как называется условие if (!x) {} и как оно работает?
Посмотрите здесь:
C++ Как настроить условие, что оно считало двухсимвольную последовательность ff,fl,fi?
C++ Для чего необходимо распределять память при помощи new и как оно работает
Условие в цикле do while работает не так, как ожидается C++
Натуральное число называется автоморфным, если оно равно последним цифрам своего квадрата. Например, 25 2 = 62 C++
C++ Выделение в динамичесую память как его написать и как оно происходит? Что это я пишу?
C++ Как называется функция
Как называется такой объект? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Progers
New to C++
83 / 44 / 5
Регистрация: 14.01.2013
Сообщений: 258
21.04.2014, 12:55     Как называется условие if (!x) {} и как оно работает? #2
Цитата Сообщение от Петр91 Посмотреть сообщение
как называется условие if (!x) {} и как работает?
Если не X то выполнится то, что в скобках. То есть если X = true то !X это False.
Цитата Сообщение от Петр91 Посмотреть сообщение
И главный вопрос, как сделать несколько таких условий? if (!x && !y) {} не работает.
Я не уверен но попробуйте поставить приоритеты, например попробуйте так
C++
1
if ((!x) && (!y)) {}
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
21.04.2014, 13:06     Как называется условие if (!x) {} и как оно работает? #3
фактически if (!x) - все равно что if (x == 0)

Добавлено через 27 секунд
а if (x) - все равно что if (x != 0)
Петр91
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
21.04.2014, 15:22  [ТС]     Как называется условие if (!x) {} и как оно работает? #4
то то и оно, что когда пишешь if (!x) {} Выполняется x!!! Пример.
C++ (Qt)
1
2
3
4
5
if (!serial.open(QIODevice::ReadWrite)) {
            processError(tr("Can't open %1, error code %2")
                         .arg(serial.portName()).arg(serial.error()));
            return;
        }
Если не можем открыть порт, выводим ошибку. Иначе выражение "serial.open(QIODevice::ReadWrite)" выполнится!!
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
21.04.2014, 15:27     Как называется условие if (!x) {} и как оно работает? #5
Цитата Сообщение от Петр91 Посмотреть сообщение
Иначе выражение "serial.open(QIODevice::ReadWrite)" выполнится!!
Оно в любом случае выполнится, потому что if проверяет результат выражения. Чтобы получить результат выражения, нужно его выполнить, логично?.
Петр91
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
21.04.2014, 16:44  [ТС]     Как называется условие if (!x) {} и как оно работает? #6
О, ясно! Но как выполнить несколько условий? Методом тыка,
C++ (Qt)
1
if ((!x) && (!y)) {} //не работает
C++ (Qt)
1
if ((!x) || (!y)) {} //работает
Получается в первом условии проверяется почему то X и этим компилятор ограничивается. А во втором проверяет все. Во втором случае, "хотя бы одно" - поэтому ему все проверить надо. Но в первом то, тоже ему надо все проверить...
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16694 / 6620 / 431
Регистрация: 12.06.2012
Сообщений: 19,875
Завершенные тесты: 1
21.04.2014, 16:50     Как называется условие if (!x) {} и как оно работает? #7
Оператор И возвращает TRUE только в том случае, если все подвыражения возвращают истину. В целях оптимизации (и следуя здравой логике), если первое подвыражение не выполнилось, то второе проверять не имеет смысла (чем, кстати, довольно часто пользуются)
Оператор ИЛИ действует схожим образом, только наоборот. Если первое подвыражение выполнилось, то второе проверять не имеет смысла.

....Можете использовать "исключающее или" (xor)

Добавлено через 55 секунд
P.S. xor в C++ == "^"
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
21.04.2014, 16:53     Как называется условие if (!x) {} и как оно работает? #8
а можно
C++
1
2
3
if (!x)
  if (!y)
   ...
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16694 / 6620 / 431
Регистрация: 12.06.2012
Сообщений: 19,875
Завершенные тесты: 1
21.04.2014, 16:54     Как называется условие if (!x) {} и как оно работает? #9
Цитата Сообщение от Керра Посмотреть сообщение
if (!x) - все равно что
Не совсем точно.. Например:
C++
1
2
3
4
5
const char c = '\0';
    if(!c)
        std::cout << "OK" << std::endl;
    else
        std::cout << "Fail" << std::endl;
Петр91
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
21.04.2014, 17:10  [ТС]     Как называется условие if (!x) {} и как оно работает? #10
Спасибо царь, за разъяснение!) Все ясно! Только вы меня неправильно поняли, мне как раз таки и нужно x y z выполнить. Это условие как раз таки и подходит.
C++ (Qt)
1
if ((!x) || (!y)) {}
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
21.04.2014, 17:12     Как называется условие if (!x) {} и как оно работает? #11
Цитата Сообщение от KOPOJI Посмотреть сообщение
C++
1
2
3
const char c = '\0'; 
if(!c) std::cout << "OK" << std::endl; 
else std::cout << "Fail" << std::endl;
и что? и что ужасно противоречивого должно выводиться? Разве не ОК, как и ожидалось?
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16694 / 6620 / 431
Регистрация: 12.06.2012
Сообщений: 19,875
Завершенные тесты: 1
21.04.2014, 17:18     Как называется условие if (!x) {} и как оно работает? #12
Цитата Сообщение от Петр91 Посмотреть сообщение
Только вы меня неправильно поняли, мне как раз таки и нужно x y z выполнить
как раз я правильно понял, вы меня не поняли
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
28
29
#include <iostream>
 
bool a() {
    std::cout << 'a' << std::endl;
    return true;
}
bool b() {
    std::cout << 'b' << std::endl;
    return false;
}
bool c() {
    std::cout << 'c' << std::endl;
    return false;
}
bool d() {
    std::cout << 'd' << std::endl;
    return true;
}
 
int main(int argc, char *argv[])
{
    if (!a() || !b())
        std::cout << "A or B" << std::endl;
 
    if (!c() || !d())
        std::cout << "C or D" << std::endl;
 
    return 0;
}
'd' вы никогда не увидите, потому что первое условие - !c() уже успешно выполнилось.

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

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и что?
да и ничего.

Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
21.04.2014, 18:24     Как называется условие if (!x) {} и как оно работает? #13
я так поняла, что нужно сохранить возвращаемые значения, и потом уже сохраненные значения пихать в if.
Петр91
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
22.04.2014, 02:21  [ТС]     Как называется условие if (!x) {} и как оно работает? #14
Цитата Сообщение от KOPOJI Посмотреть сообщение
Как раз я правильно понял, вы меня не поняли
Под рукой компилятора нет, но
Цитата Сообщение от KOPOJI Посмотреть сообщение
'd' вы никогда не увидите, потому что первое условие - !c() уже успешно выполнилось.
!с() - успешно выполнилось, и это условие выполнится
C++ (Qt)
1
2
if (!c() || !d())
        std::cout << "C or D" << std::endl;
т.е Выведется на экран "C or D". Что нам это дает, что если a ИЛИ b ИЛИ c ИЛИ d вернет false (не выполнится) то получим ошибку. Что собстно и надо.
Хотя логичней было бы проверить все и вывести по каждому ошибку.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
22.04.2014, 09:36     Как называется условие if (!x) {} и как оно работает? #15
О чем я и говорю.
C++
1
2
3
bool bx = x(), by = y(), bz = z(); // выполнились все
if (!bx || !by)
  ...
Петр91
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
22.04.2014, 10:18  [ТС]     Как называется условие if (!x) {} и как оно работает? #16
Цитата Сообщение от Керра Посмотреть сообщение
О чем я и говорю.
C++ (Qt)
1
2
3
bool bx = x(), by = y(), bz = z(); // выполнились все
if (!bx || !by)
 ...
А смысл делать еще переменные bool? Если у нас что то не выполнится, у нас сработает условие if (!bx || !by) {error}, и в итоге мы получим общую ошибку. Тоже самое можно сделать и без bool. Я полазил в примерах которые идут с QT, в них делают так:
C++ (Qt)
1
2
3
if (!x) { }
if (!y) { }
if (!z) { }
В итоге имеем условие на каждую ошибку.
KOPOJI
22.04.2014, 10:30
  #17

Не по теме:

ага..

C++
1
2
3
4
5
6
7
8
9
10
int main(int argc, char *argv[])
{
    switch(true)
    {
        case (1 == 2): std::cout << "1 == 2" << std::endl; break;
        case (1 < 2): std::cout << "1 < 2" << std::endl; break;
    }
 
    return 0;
}

c0cu4
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 13
22.04.2014, 11:27     Как называется условие if (!x) {} и как оно работает? #18
Если надо выполнить все три и проверить, что хотя бы один не выполнился, то
C++
1
if (!(x && y && z))
Либо я что-то неправильно понял
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16694 / 6620 / 431
Регистрация: 12.06.2012
Сообщений: 19,875
Завершенные тесты: 1
22.04.2014, 12:09     Как называется условие if (!x) {} и как оно работает? #19
c0cu4, да не выполнятся они все три, если первый или второй вернет false. Говорил же выше, как работает логическое И.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
bool a() {
    std::cout << 'a' << std::endl;
    return true;
}
bool b() {
    std::cout << 'b' << std::endl;
    return false;
}
bool c() {
    std::cout << 'c' << std::endl;
    return false;
}
 
int main(int argc, char *argv[])
{
    if (!(a() && b() && c()))
        ;
 
    return 0;
}
Не увидите вы тут "c"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 12:19     Как называется условие if (!x) {} и как оно работает?
Еще ссылки по теме:
Как называется эта штука? C++
C++ Как называется компонентная функция?
«Структура в структуре» - как правильно называется? C++
C++ Семантический вопрос... как называется язык-то?
C++ Каково будет условие вывода на экран простого числа( оно делится только на 1 и на себя)

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

Или воспользуйтесь поиском по форуму:
c0cu4
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 13
22.04.2014, 12:19     Как называется условие if (!x) {} и как оно работает? #20
Да, туплю.
Ну тогда записать в три числа, перемножить их и проверить, что не 0
Yandex
Объявления
22.04.2014, 12:19     Как называется условие if (!x) {} и как оно работает?
Ответ Создать тему
Опции темы

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