![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Etar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 21.2.2008 Репутация: 1 Всего: 1 |
Здравствуйте.
Вот есть такой код:
Какая же последовательность действий при вычислении выражения в первом и во втором случаях? Попытался разобраться: x + ++ x + x сперва должен выполнится оператор ++, так как у него самый высокий приоритет в выражении, затем остальные операторы слева направо: x + 2 + x // преинкремент увеличивает x на 1 и возвращает увеличенный результат 2 + 2 + x 2 + 2 + 2 = 6 - что и выходит в C++ но в C# выходит 5 выходит, что логика здесь другая, например такая: сперва извлекается значение из первой переменной x, затем выполняется оператор ++, затем извлекается значение из последней переменной x: 1 + ++x + x 1 + 2 + x 1 + 2 + 2 = 5 но тогда как-то странно получается, выходит что существует некая 'операция извлечения значений из переменных', которая имеет одинаковый с постинкрементом приоритет (т.е. самый верхний) ![]() x + x ++ + x Здесь же вообще непонятно. Если по С++ рассуждать, то здесь будет так: сперва выполнить ++, так как у него самый высокий приоритет среди операторов затем выполнить остальное слева направо: x + 1 + x // постинкремент сперва возвращает текущее значение переменной, затем ее увеличивает 2 + 1 + x 2 + 1 + 2 = 5 но компилятор C++ выдает мне 4, и C# тоже самое что за ерунда Объясните пожалуйста! Спасибо. |
|||
|
||||
PPS05 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 6.11.2005 Где: Беларусь, Минск Репутация: нет Всего: 7 |
Где-то на Винграде уже была такая тема...
-------------------- Ушел с форума и не вернулся. |
|||
|
||||
Real |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 507 Регистрация: 9.11.2007 Репутация: 1 Всего: -1 |
Глючит С++ Это сообщение отредактировал(а) Real - 22.2.2008, 00:25 |
|||
|
||||
Crimp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 21.10.2007 Где: Tula Репутация: 1 Всего: 2 |
читать тут http://www.progz.ru/forum/lofiversion/index.php/t32777.html
должно сразу навести на правельные мысли, или гугли ешё Это сообщение отредактировал(а) Crimp - 22.2.2008, 01:30 |
|||
|
||||
vponomarov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 4 Всего: 12 |
сорри, был не прав:(
Это сообщение отредактировал(а) vponomarov - 22.2.2008, 11:54 |
|||
|
||||
bogys |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 25.12.2007 Репутация: нет Всего: 1 |
||||
|
||||
MFSham |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 28.8.2005 Где: Беларусь, Гродно Репутация: нет Всего: 3 |
Тема точно такая была. Я тоже раньше задавался точно таким же вопросом
![]() upd. вот еще одна тема Это сообщение отредактировал(а) MFSham - 22.2.2008, 18:54 --------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны. |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 1 Всего: 50 |
А по-моему это просто UB
![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |