Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
5 / 5 / 5
Регистрация: 15.05.2012
Сообщений: 66
1

Почему в инструкции if (x++ && y++) {} инкремент первой переменной срабатывает, а второй - нет?

13.09.2018, 11:22. Показов 2081. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(int argc, char** argv)
{
   int x = 0;
   int y = 0;
 
   if (x++ && y++)
   {
     y += 2;
   }
 
   std::cout << x + y << std::endl;
 
return 0;
}
почему инкремент только у "x" сработает, а у "y" нет?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2018, 11:22
Ответы с готовыми решениями:

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume...

Объясните почему не срабатывает И (&&)
Есть задача нахождения наибольшего общего делителя для двух чисел. Программу я написал.Но почему...

error '80020009' &Icirc;&oslash;&egrave;&aacute;&ecirc;&agrave;. /lalala/profile.asp, line 28
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error...

Помогите найти драйвера для pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2
pci\ven_8086&amp;DEV_266E&amp;SUBSYS_A002145&amp;REV_05\3&amp;13C0B0C5&amp;0&amp;F2 Мультимедиа аудиоконтроллер ...

3
Don't worry, be happy
17168 / 10052 / 1934
Регистрация: 27.09.2012
Сообщений: 25,042
Записей в блоге: 1
13.09.2018, 11:38 2
Лучший ответ Сообщение было отмечено kLeimor как решение

Решение

Потому что && обладает так называемой "ленивостью". Если значения левого операнда достаточно чтобы вычислить результат всего выражения, то правый операнд вычисляться не будет. В твоем случае x был равен нулю, а значит выражение в независимости от значения правого операнда даст false, а значит правый операнд вычисляться не будет. Присвой x единичку и посмотри - правый перанд тоже будет вычислен.
1
139 / 67 / 46
Регистрация: 15.10.2015
Сообщений: 300
13.09.2018, 11:41 3
kLeimor,

C++
1
2
3
4
5
6
7
8
9
    int x = 0;
    int y = 0;
 
    if (++x && ++y)
    {
        y += 2;
    }
 
    std::cout << x + y << std::endl;
Постфиксный и префиксный инкримен --> тут и ответ выше(Часть логического выражения всегда истинно).
1
5 / 5 / 5
Регистрация: 15.05.2012
Сообщений: 66
13.09.2018, 11:43  [ТС] 4
понял, спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2018, 11:43

Мультимедиа контролер PCI\VEN_14F1&DEV_8800&SUBSYS_EA3D14F1&REV_05\4&25700A26&0&3020
Помогите пожалуйста найти драйвер на мультимедиа видеоконтролер ...

немогу найти драйвера на PCI\VEN_1039&DEV_7012&SUBSYS_810D1043&REV_A0\3&61AAA01&0&17
Мультимедиа аудиоконтроллер PCI\VEN_1039&amp;DEV_7012&amp;SUBSYS_810D1043&amp;REV_A0\3&amp;61AAA01&amp;0&amp;17

Нужен драйвера, код PCI\VEN_1039&DEV_7012&SUBSYS_0C98105B&REV_A0\3&B1BFB68&0&17
всем привет !! уменя нет звука нужен драйвер код...

Драйвера на PCI\VEN_10B7&DEV_1700&SUBSYS_80EB1043&REV_12\4&2E98101C&0&28 F0
помогите плиз - вот ID: PCI\VEN_10B7&amp;DEV_1700&amp;SUBSYS_80EB1043&amp;REV_12\4&amp;2E98101C&amp;0&amp;28F0 ...

Кто встречался с таким, подскажите - (#206;&#225;&#250;&#229;&#234;&#242;)
Если на asp-странице происходит ошибка, то сервер выдает сообщение вот примерно в таком виде: ...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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