下图是C编程语言中的操作顺序。
对于类似这样的表达式:
int a = 3;
int z = a - a-- ;
printf("%d", z);
我认为a--
首先执行,所以现在a
变成了2
并且a--
本身是3的旧值。
所以我认为会发生z = 2 - 3 = -1
对我来说这很合逻辑。
但对于这样的事情:
int a = 3;
int z = 9 + a - a-- ;
printf("%d", z);
结果是9,但对我来说似乎不合逻辑。
如果我要对该表达式求值,我会说a--
将首先求值,以便a变为2,并且a--
本身为3
,现在9 + 2 - 3
为{{ 1}}。我想念的是什么?