|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.10.2015, 19:37 | #1 |
Пользователь
Регистрация: 06.10.2015
Сообщений: 12
|
Решение выражения
Вопрос состоит вот в чем. Дан кусочек программы :
int x,y,z; x=y=z=1; ++x||++y&&++z; printf('%d %d %d',x,y,z); Выводит : 2 1 1. Почему? Ну и второй вопрос такой же,но выражение : ++x&&++y&&++z; Выводит: 2 2 2. По какому принципу считать? И как вообще присвоение идёт? |
06.10.2015, 19:48 | #2 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
оптимизация булевых операторов... ++х преобразуется в (++х > 0), что true.... если стоит || (или), то правую часть нет смысла считать т. к. левая часть true и правой части это не изменить никак
вариант && возвращает 2 2 2 т. к. у && (и) важны обе части.... попробуй написать --x&&++y&&++z |
06.10.2015, 19:53 | #3 |
Пользователь
Регистрация: 06.10.2015
Сообщений: 12
|
Спасибо тебе большое) А то в книге,которую нам преподаватель посоветовал, об этом слова не написано)
|
06.10.2015, 20:06 | #4 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
чуть добавлю)
выражение вида a && b можно представить/заменить псевдокодом/функцией: Код:
Код:
ну и плюс такое правило: если в логическом выражении присутствует НЕ логическая переменная, то её пытаются сравнивать с 0, чтоб получить логическое значение штука необычная, порой она ошибки вносит, но порой сильно упрощает код (пример см. в группе у меня, там на РНР пример) |
06.10.2015, 20:48 | #5 |
Пользователь
Регистрация: 06.10.2015
Сообщений: 12
|
Обязательно посмотрю,спасибо)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Решение выражения. | Roman1295 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 19.12.2012 12:21 |
Решение выражения. | Roman1295 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 19.12.2012 08:55 |
решение математического выражения | akum905 | Общие вопросы C/C++ | 0 | 12.11.2011 00:04 |
Решение выражения ((D^2-A)^2\D^2+B)-20. | Kroleg | Помощь студентам | 3 | 27.06.2011 19:40 |
решение выражения на паскале | bonys91 | Помощь студентам | 2 | 02.04.2009 22:18 |