![]() |
|
Модераторы: bsa |
![]()
|
|
| zim22 |
|
||||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Это выражение возвратит значение true, если значение переменной k больше единицы! Т.к. операторы отношения(<, <=, >, >=) выполняются слева направо. после выполнения первой проверки i < j оператор способен вернуть лишь значение 0 или 1. А уже потом 0 или 1 сравнивается с k. Правильно так нужно написать:
Добавлено через 11 минут и 58 секунд Любое отличное от нуля значение расценивается как true. НО! При явном сравнении со значением true, проверяется равенство лишь со значением 1.
Только первый if сработает. |
||||||
|
|||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
zim22, ты решил сюда учебник переписать7 я думаю не стоит.
|
|||
|
||||
| Goliaf777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 19.11.2008 Репутация: нет Всего: нет |
zim22 советую прочитать С.Прата Язык программирования C++. Лекции и упражнения и читая много думать , научишься очень многому и поймешь многое. Там все обо всем написано.
Добавлено через 1 минуту и 22 секунды А ты сам понимаешь зачем if (i < j && j < k) { /* ....... */} будет верно? Так что почитай ту книгу там не только нетревиальные оссобенности но и много другого. Добавлено через 4 минуты и 2 секунды int a = 2; if (a) {std::cout << "a";} if (a == true) {std::cout << "a == true";}; А знаешь почему только первый?Потому-что типы разные true булевой тип , а переменная а это инт.А bool знает только 1 и 0. |
|||
|
||||
| zim22 |
|
||||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
"зачем" будет верно не понимаю. знаю "почему" будет верно (потому что оператор && возвращает true, когда оба его операнда равны true)
Я знал раньше, что любое значение, отличное от нуля, расценивается в операторах условия, как true. Но не знал, что если напрямую сравнивать с true, то не-нулевое значение(не 1) не будет true. Ещё в С, где тип bool не поддерживается, можно его определить явно:
а за книжку спасибо. я и не знал, что она существует. **** по отзывам accu.org книжка С.Праты фиговенькая... http://accu.org/index.php?module=bookrevie...ch&rid=1744 Это сообщение отредактировал(а) zim22 - 24.1.2009, 13:09 |
||||||
|
|||||||
| Goliaf777 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 19.11.2008 Репутация: нет Всего: нет |
if (i < j && j < k) { /* ....... */} будет верно в отличие от первого потому-что здесь виноват приоритет действи. Асоциативность идет слева направо в первом случае. i < j < k равнозначно (i < j)< k , следователь но если i <j верно то это равно 1 следовательно 1<k зависит от значения k.
А книга классная тока ее осилить надо 1104 страниц... |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
объясните такую вещь:
нада было сделать метку вида base*** где *** - номер строки, например base123 для строки 123 номер строки можно получить из директивы __LINE__ так вот base##__LINE__: генерит метку base__LINE__ а чтобы получить нужную строку нада писать #define BASE3(line) base##line #define BASE2(line) BASE3(line) #define BASE BASE2(__LINE__) BASE: почему такая длинная цепочка? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
для того чтоб раскрылся макрос, иначе действием будет производиться с именем макроса, а не его содержимым. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
а #define BASE2(line) BASE3(line) зачем?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
BASE2 как раз и расскрывает макрос
a BASE нужен для возможности вызова без параметров BASE3(line) // вместо line подставится (условно) 123 (раскрытый __LINE__) BASE2(line) // вместо line подставится __LINE__ Это сообщение отредактировал(а) mes - 24.1.2009, 17:31 |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Нельзя определить переменную int xx в case '1'
Только в последнем блоке case или default можно. Сделано это специально, чтобы не использовали переменные, т.к. нижние метки case могут использовать их.
Если очень хочется определить переменную, то можно заключить в фигурные скобки участок кода:
|
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
давно хотел узнать, да лень было проверить
while () { int x; ... } будет создавать\удалять x в каждой итерации? |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
по идее да, но компилятор умный, может вынести определение переменной вне цикла.
|
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
В шаблоне vector нет операции вставки элементов в начало последовательности (аналога ф-и push_front() для list и deque)
Т.е. этот код работать не будет:
Но можно написать так:
|
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
zim22, что ты хочешь добиться своими сообщениями в этой теме? Если ты надеешься, что этот топик будут читать новички, то глубоко заблуждаешься - слишком много написано лишнего, да и заботы у них другие, а профессионалам эта информация давно известа.
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
bsa, полностью согласен. тему можно закрывать.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |