为什么下面代码输出不同?#include <stdio.h>int main(){int a=1;a=a++;printf("%d",a);return 0;}#include <stdio.h>int main(){int a=1,b;b=a++;printf("%d",b);return 0;}
这两个程序的输出结果是相同的:
因为它们的操作都是:先取变量a的值,取完后a自增,最后取前面取到的值赋值给赋值号左边的变量(所以最后输出变量的值就都是1)。
a=a++;
这是一个未定义行为,++的副作用自增1的发生时间是不定的,可能在赋值副作用前,也可能在赋值副作用后