|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.01.2011, 16:18 | #1 |
Форумчанин
Регистрация: 05.12.2009
Сообщений: 253
|
Префиксная и постпрефиксная операции
Заранее прошу извинение за возможно глупый вопрос через три дня сессия и в попытке освоить то, что не освоил за полугодие, чайник (это то чем я думаю) начинает отказывать. Вопрос такой:
Чему равно значение x после: int y=1, x=++y+1+y++; Буду коментировать свою логику. ++y (у=2) +1 (у=3) +y(3+3) в итоге х=6 а игрек после постпрефиксной операции равен 7 (тоже ни когда не задумывался но х может быть равно и 7, 1+у выполнено значит у должно увеличется в итоге х равен 7) . Но "правильный" ответ "5". Вообщем мозг запищал и потребовал помощи. Поможете? Во избижание лишних вопросов компилятор поставить не могу винда тихо умирает
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
Последний раз редактировалось atenon; 07.01.2011 в 16:24. |
07.01.2011, 16:34 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
07.01.2011, 16:51 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
5 потому что ты ошибся написал +1 (у=3). у еще не вычеслен окончательно
++у - дает 2 потом +1 - даст три, но у все еще равен 1, поскольку выражение не закончено далее у++ даст 2 (опять таки у еще равен 1, а 2 всего лишь участник выражения, временное значение) И потом 3+2 дает 5, а уж теперь 5 помещается в у Так понятнее? В ходе выражения переменные не изменяются, они рассчитываются, и результат расчета подвыражений живет только в рамках выражения, но не влияет на выходной результат прямо, а лишь становится его причиной Цитата:
I'm learning to live...
|
|
07.01.2011, 16:55 | #4 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
по нормальному, тут undefined behavior
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
07.01.2011, 17:03 | #5 | |
Форумчанин
Регистрация: 05.12.2009
Сообщений: 253
|
Цитата:
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
|
|
07.01.2011, 17:17 | #6 | ||
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
кстати, у меня плохие новости. Я забыл, что в С вычисляется справа налево. Хотя на результат это не влияет, но точности для:
Код:
Код:
Цитата:
Цитата:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
||
07.01.2011, 17:28 | #7 |
Форумчанин
Регистрация: 05.12.2009
Сообщений: 253
|
Я конечно не гуру програмирования но помоему господин Страуструп завещал инициализировать перемнные
Код:
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
Последний раз редактировалось atenon; 07.01.2011 в 17:32. |
07.01.2011, 18:06 | #8 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
хм.. и что тут по-вашему не инициализировано?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
07.01.2011, 22:14 | #9 | |
Пользователь
Регистрация: 30.05.2009
Сообщений: 46
|
Цитата:
Точки следования (sequence points) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++ Операции с циклами | Pascaler | Помощь студентам | 4 | 03.12.2010 20:37 |
Битовые операции | ("")(Э_Є)("") | Общие вопросы C/C++ | 4 | 03.07.2009 19:15 |