![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
LiRienko |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 10.9.2014 Репутация: нет Всего: нет |
ну почему 10? )) у меня получается 9 и все...
Распишете пошагово, пожалуйста: a = ++variable + 1 + ++variable * 2; |
|||
|
||||
NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: 0 Всего: 13 |
Согласно Стандарту, это UB (Undefined Behavior, неопределённое поведение), а следовательно результат этого выражения может зависеть от компилятора, операционки и фазы луны. Вобщем, почему так делать нельзя, читай тут: http://alenacpp.blogspot.co.il/2005/11/sequence-points.html -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
LiRienko |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 10.9.2014 Репутация: нет Всего: нет |
на другом форуме не ответили иначе и в общем понятно стало:
a = ++variable + 1 + ++variable * 2; 1) ++variable - дает variable = 2 2) ++variable вторая - дает variable = 3 3) variable * 2 дает 2*3=6 4) 3+1+6 дает 10 |
|||
|
||||
NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: 0 Всего: 13 |
На другом форуме тебе ответили неправильно люди, которые не разбираются в вопросе. -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
На этом шаге - право компилятора (во имя оптимизации или просто, потому что хочется), считать variable=2 и variable=3 разными переменными Поэтому может стать Ну или скажем операции могут производится поочередно. Скажем ++variable -> variable = 2, (variable + 1) = 3, тогде уже будет 3+ ++variable * 2 -> =9 А все потому что
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |