我今天遇到了一个巫术。
语言:C
代码:
#include <stdio.h>
main()
{
int i = 5;
i = i++;
printf ("%i", i);
}
输出:
6
如何?为什么?
这应该是棘手的代码,但反过来。粗心的程序员会认为这i = i++
只是简单的增量,但事实并非如此。然而它在这里像一个一样工作。它应该是5
!就像在JavaScript中一样。
应该发生什么。
i
得到 的值5
。i++
返回5
。i
后递增i++
(to6
)。i
获取5
(由 )返回的值i++
。i
( )的值5
被打印出来。
然而它是6
。
我无法在 SO 或整个互联网上找到对此的描述(正好相反)。
这里有什么问题?
请解释。