输出的结果是你写的。
单目运算符优先级别高于双目运算符
j=3-i++; 是先计算x=i++ 再计算j=3-x
但是这里面有个关键,就是
i++是一个表达式,它的值等于没有变化前的i
++i的值等于变化后的i
比如 i = 0 那么 (i++) = 0 (++i) = 1
所以:j=3-i++; 是先计算x=i++=0 但是i已经为1了 再计算j=3-x=3
这样就出来你所写的结果了。你是理解成了i++等于i变化后的值,所以有上面的疑惑
使用gdb查看程序变量变化
1 输出的结果是:
0,3
1,3
完全正确。
2 j=3-i++; 等价于j=3-i;i++;是对的。在j=3-i++; 这个语句中,i++优先于减运算,j=3-i++; 还等价于j=3-(i++);但i++表示先取i的值,再自加,因此参加减运算的是没有自加前的值。