![]() |
|
Модераторы: bsa |
![]()
|
|
| n199a |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
Почему код выше будет выводить десятичное число 16, а не 8? Почему надо использовать присвоение (как в коде ниже) и выводить уже значение переменно b ?
>> (<<) не изменяет значение исходной переменной, а используется как "посредник" ? |
||||
|
|||||
| feodorv |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Нет, не изменяет, операция проводится над копией значения. Насчёт посредника - не понял... Ну представьте себе, что любая подобная операция проводилась бы непосредственно со значением самой переменной:
После a + 10 значением переменной a должно стать 15? Как и b? Смысл??? Чтобы вот так писать???
Данный оператор имеет значение, просто это значение пропадает - ничему не присваивается.... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||
|
|||||||
| n199a |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
Я не знал как выразиться. Копия - то, что я имел ввиду.
Если записать так: a >> 1; b = a; printf("b = %d", b); то, b равно 16. Не очень понял объяснение.
Всё, понял. Теперь стало понятно и про:
|
||||||||
|
|||||||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
n199a,
в дополнение к комментариям feodorv предлагаю еще рассмотреть такую конструкцию:
брюки превращаются... |
||||
|
|||||
| n199a |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
Ага, понятно теперь.
123 = 1111011 После сдвига: 0111101 = 61 baldina, я правильно понял? Это сообщение отредактировал(а) n199a - 23.7.2013, 17:10 |
||||||||
|
|||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
правильно. только я другое имел в виду: выражение 123 >> 1 выглядит естественно и понятно, однако мы не ожидаем, что изменится константа 123.
|
|||
|
||||
| n199a |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
||||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
в том же, что и "a + b". тут мы понимаем, что речь идет о сложении a и b, и что сами a и b не изменяются. полагаю, если букву (переменную) заменить на число (константу), неизменность операндов более очевидна.
|
|||
|
||||
| akizelokro |
|
||||||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
комментарий непонятен. флаг "х", кажисть, относится к шестнадцатеричной системе и правильно выводит 16 комментарий должен иметь вид
Не обязательно.
Просто запомни, что есть базовые операторы, ну я не лихой программер, могу в терминологии и ошибиться, которые действуют на переменную, но результат их нужно хранить в другой переменной. А есть производные от базовых, например ++, +=, >>= , которые изменяют значение самой переменной. Лови ссылочку из википедии http://ru.wikipedia.org/wiki/%D0%9E%D0%BF%..._%D0%B8_C%2B%2B Это сообщение отредактировал(а) akizelokro - 23.7.2013, 17:55 -------------------- a = a + b; b = a - b; a = a - b; |
||||||
|
|||||||
| n199a |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
||||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Странно, на старом форуме материал отредактирован, а здесь изменений не видно
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
![]()
|
| Правила форума "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. |