Опять глупый вопрос.
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int i = 0;
i = i++;
cout<<i;
return 0;
}
В результате этой программы я напечатал 1
, хотя ожидал 0: сначала создается временный объект, равный 0, затем увеличивается значение i, затемвременный объект возвращается и присваивается i.Просто в соответствии с:
5.2.6 Увеличение и уменьшение [expr.post.incr] 1 Значение, полученное путем применения постфикса ++, является значением, которое операнд имел до применения оператора.[Примечание: полученное значение является копией исходного значения]
Я проверил его в соответствии с MS VC 2008 и GCC.Они дают одинаковый результат, хотя по крайней мере gcc выдает предупреждение в строке приращения.Где я не прав?