В самом деле получается = 9, но я бы не советовал использовать так уродливо в общем-то неплохой язык.
Да, его гибкость столь велика, что он и такую ахинею переварит. Правда, за это многие предпочитают другие языки. Дисциплина должна быть не в языке, а в программисте. Хотя, если вам нравится рассуждать на эту тему - ну кто ж запретит!
С таким же успехом можно выяснять, сколько нематерьяльных духов уместится на конце матерьяльной иглы.
ИМХО, такие упражнения не более чем схоластика.
Но почему именно Си? возьмите другой язык, русский, например. В китайском, я думаю, много ярких примеров. Да и любой из средне-европейских будет не хуже.
-- Пт дек 24, 2010 02:31:30 --C99 писал(а):
6.5 Expressions
...
2 Between the previous and next sequence point an object shall have its stored value
modified at most once by the evaluation of an expression.⁷²⁾ Furthermore, the prior value
shall be read only to determine the value to be stored.⁷³⁾
...
Так что стандарт говорит, что поведение программы на таких вещах не определено.
GCC здесь выдает 10 - сначала два раза увеличивает, потом складывает.
ИМХО, сначала обрабатывается первая скобка (или вторая - это не важно). В процессе ее обработки
i получает значение
4, т.е приходим к выражению
j=4+(++i);дальше - ясно.