c语言没有规定压栈顺序,
c语言也没有规定参数的求值顺序,
编译器自己发挥.
但是规定了在实际调用前存在一个序列点.
具体到这个问题,
参数在压栈前被求值,
但是具体先求
哪个参数就不一定了,
可以正着求可以反着求也可以跳着
求,
而且因为逗号之间不存在序列点,
那么4个i是在什么
时刻自加也是不一定的,
c语言能保证的只是当函数被实
际调用时,
4个i的所有自加运算完成.
这也符合c99"在相邻序列点之间的同一对象最多只能被修
改1次"之规定.
所以你的问题无统一解,以后要避免这种摸棱两可的写法.
ps:
这里指的副作用就是i的自加动作.
在C编程语言中,%d和%i是格式说明符,因为%d将变量类型指定为十进制,而%i将类型指定为整数。在使用方面,使用%d或%i打印数字时,printf()函数的输出没有差异,但使用scanf时会出现差异。scanf()函数使用%i检测基数,但假设基数为10,使用%d。