Чем отличается порядок вычисления выражений между C++ и Java?

У меня свело мозги, когда я пытался понять примеры на этой странице: http://answers.yahoo.com/question/index?qid=20091103170907AAxXYG9

В частности, этот код:

int j = 4;
cout << j++ << j << ++j << endl;

дает результат :566

Теперь это имеет смысл для меня, если выражение оценивается справа налево, однако в Java аналогичное выражение:

int j = 4;
System.out.print("" + (j++) + (j) + (++j));

дает результат :456

Что более интуитивно понятно, потому что это указывает на то, что оно оценивалось слева направо. Изучая это на разных сайтах, кажется, что с С++ поведение разных компиляторов различается, но я все еще не уверен, что понимаю. Чем объясняется эта разница в оценке между Java и C++? Спасибо ТАК.

9
задан Chironex 21 June 2012 в 19:24
поделиться