又是一个愚蠢的问题。
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int i = 0;
i = i++;
cout<<i;
return 0;
}
尽管我期望为 0,但由于该程序,我得到1
了打印:首先创建了一个等于 0 的临时对象,然后 i 递增,然后返回临时对象并将其分配给 i。只是根据:
5.2.6 递增和递减[expr.post.incr] 1 应用后缀++得到的值是操作数在应用运算符之前的值。[注:得到的值是原值的副本]
我在 MS VC 2008 和 GCC 下检查了它。它们给出了相同的结果,尽管至少 gcc 在增量字符串中发出警告。我哪里错了?