powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему i не увеличивается? Топик без напрягов, для тех, кто хочет отдохнуть.
4 сообщений из 4, страница 1 из 1
Почему i не увеличивается? Топик без напрягов, для тех, кто хочет отдохнуть.
    #37540549
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример
Код: plaintext
1.
int i = 10;
i = i++; 
Исходя из того, что пишет Либерти "Программирование на C#" мы имеем
постфиксную операцию, в которой сначала должно выполниться присваивание, т. е
Код: plaintext
i=i;
,а затем инкрементирование
Код: plaintext
i++;
Результат должен быть 11.
Где я ошибся?
...
Рейтинг: 0 / 0
Почему i не увеличивается? Топик без напрягов, для тех, кто хочет отдохнуть.
    #37540815
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSSQLAndDotNet,

Ответ есть в спецификации языка.

C# Language Specification Version 4.0 §7.6.9 Postfix increment and decrement operatorsThe run-time processing of a postfix increment or decrement operation of the form x++ or x-- consists of the following steps:
If x is classified as a variable:
x is evaluated to produce the variable.

The value of x is saved.

The selected operator is invoked with the saved value of x as its argument.

The value returned by the operator is stored in the location given by the evaluation of x.

The saved value of x becomes the result of the operation.


То есть i++ возвращает значение 10, которое и переписывает значение 11. Фактически описанная Либерти семантика не верна. Точнее она верна только если у нас разные переменные или мы игнорируем возвращаемое значение - то есть просто i++ без присвоения.
...
Рейтинг: 0 / 0
Почему i не увеличивается? Топик без напрягов, для тех, кто хочет отдохнуть.
    #37540898
MSSQLAndDotNet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,
видимо туго у меня с вражеским, по мне так в спецификации написано примерно тоже что и у Либерти.
Можете перевести перефразировав для лучшего понимания?
...
Рейтинг: 0 / 0
Почему i не увеличивается? Топик без напрягов, для тех, кто хочет отдохнуть.
    #37541471
Фотография n_string
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
int i = 10;
i = i++;
i = ++i;
 
Порядок операций разный.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему i не увеличивается? Топик без напрягов, для тех, кто хочет отдохнуть.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]