笔试也总考这个
int a = 4;
a += (a++); //9
a += (++a); //10
(a++) += a; //后两个我用gcc编译出错
(++a) += (a++); //这个VC不会报错,结果:11
只要一反汇编出来就马上清楚了,
如果直接这象这样打印
printf("%d,%d/n", a+=(a++), a+=(++a));
结果是
8, 10
int i=10, j=10, k=3;
k *= i+j;
因为赋值语句优先级最低,所以先执行加法,结果为60
int a = 4;
a += (a++); //9
a += (++a); //10
(a++) += a; //后两个我用gcc编译出错
(++a) += (a++); //这个VC不会报错,结果:11
只要一反汇编出来就马上清楚了,
如果直接这象这样打印
printf("%d,%d/n", a+=(a++), a+=(++a));
结果是
8, 10
int i=10, j=10, k=3;
k *= i+j;
因为赋值语句优先级最低,所以先执行加法,结果为60