我今天遇到了一个巫术。
语言: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 或整个互联网上找到对此的描述(正好相反)。
这里有什么问题?
请解释。