-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
|
|
1 | |
Как понимать условие if (!a)?18.07.2015, 10:24. Показов 25572. Ответов 23
Метки нет (Все метки)
0
|
18.07.2015, 10:24 | |
Ответы с готовыми решениями:
23
Как понимать условие цыкла while(1) ? Как это понимать? Как понимать такую запись? Как это понимать вообще? |
67 / 67 / 72
Регистрация: 10.04.2015
Сообщений: 281
|
|
18.07.2015, 10:45 | 2 |
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
18.07.2015, 10:46 | 3 |
0
|
Модератор
|
||||||||||||||||
18.07.2015, 12:48 | 4 | |||||||||||||||
Сообщение было отмечено castaway как решение
Решение
То, что находится внутри скобок оператора if приводится к булевому типу.
Для наглядности рассмотрим два варианта: Прямой вариант:
Если значение переменной a равно нулю, то: 1) в прямом варианте блок if не выполнится 2) в инвертированном, напротив, выполнится Если значение переменной a отлично от нуля, то: 1) в прямом варианте блок if выполнится 2) в инвертированном, напротив, не выполнится Добавлено через 23 минуты Для пущей наглядности:
3
|
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
|
||||||
18.07.2015, 13:16 [ТС] | 5 | |||||
Почему :
Статик а = 0. Если не-а, т.е. 1 то а = 6+1 => а = 7. Ок! Но с cout функция уже не сработает, т.к. не-7 это 0. Печатаем у, равный у нас 6.
0
|
Неэпический
|
||||||
18.07.2015, 22:08 | 9 | |||||
castaway, функция f принимает ссылку и внутри меняет значение параметра (++x).
А что будет вычислено раньше?
0
|
18.07.2015, 22:11 | 10 | |||||
Потому.
1
|
Неэпический
|
|
18.07.2015, 22:23 | 13 |
Убери первый вызов, чтобы x поменялся:
clang - http://rextester.com/LND13333 - 77 gcc - http://rextester.com/GSPKRY24977 - 76
1
|
sourcerer
|
18.07.2015, 22:25
#14
|
0
|
castaway
|
18.07.2015, 22:40
#15
|
Не по теме: Всё верно. Туплю.. Бывает.. Вроде бы проблема стара как мир, но и GCC (с -Wall и -pedantic), и ICL даже предупреждений не выдают. А я просто забыл об этих "мелочах". В том то и дело, что ни чем. Почти два месяца работы нет. Без физических нагрузок мозг начинает думать иначе. + отвлекаюсь на другие направления - Box2D, Chipmunk2D, OpenGL. Голова у меня, к сожалению, не резиновая)
0
|
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
|
|
19.07.2015, 05:42 [ТС] | 16 |
" При повторном вызове функции, переменная a
внутри неё не изменится." ах да.... if ( !a ) a = ++ x ; return a ; это же : if ( !a ) a = ++ x ; else return a ; а я что то видел это как if ( !a ) { a = ++ x ; return a ;} т.е. ретен не всегда, а лишь при верном условии.... Добавлено через 11 минут вернее if ( !a ) {a = ++ x ;} else {} return a ; Добавлено через 6 минут и что, int & x стало = int y? мы ж не делали присвоения ссылки переменной!
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
19.07.2015, 06:38 | 17 | |||||
Уже говорил, повторю еще раз: почитай книги. Часть вопросов отпадет, и есть надежда, что оставшиеся будешь формулировать понятнее.
0
|
19.07.2015, 09:07 | 20 |
0
|
19.07.2015, 09:07 | |
19.07.2015, 09:07 | |
Помогаю со студенческими работами здесь
20
Область видимости, как ее понимать Как вообще понимать это задание? Как понимать, что в правой части * в скобках? Объясните, на что ругается компилятор, и как это понимать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |