在看一篇文章时,提到这样一段代码
#include <stdio.h>
void foo(void)
{
int a = 41;
a = a++;
printf("%d\n", a);
}
int main(void)
{
foo();
}
本以为很简单嘛,就是不要忘了a赋值之后还要自己。其实是自己想的太简单了。
因为在vs2008和linux gcc下跑的结果不一样。研究一下这里面的原因。
在vs2008下,输出的是42.但是在linux gcc 下
结果居然是41.
那篇文章解释说
The rules for sequencing says
that you can only update a variable once
between sequence points