int a = 1;
printf("%d,%d,%d,%d,%d,%d\n", ++a, a++, ++a, a++, ++a, a++);
遇到上述问题不要慌,结合表格,按照以下3个步骤解决即可。
- 从右往左计算结果,在下面表格中将结果写下来。
- 后++(后--)的将原本的值保存到副本里,然后将计算的结果写下来, 其他的没有副本,只有真值。
- 输出结果时:把副本中的X替换成最终的真值,逆序输出
输出项(逆序) | a++ | ++a | a++ | ++a | a++ | ++a |
真值 | 2 | 3 | 4 | 5 | 6 | 7 |
副本 | 1 | X | 3 | X | 5 | X |
把副本中的X替换成最终真值7,逆序输出副本:7, 5, 7, 3, 7, 1
这就是最终的结果了。你学fei了吗?
以下是第二个例题,尝试用上述步骤解决:
int a = 1;
printf("%d,%d,%d,%d,%d,%d\n", --a, a, --a, a--, a, a--);
结果是 : -3,-3,-3,0,-3,1