c语言关于%i的解释

Python016

c语言关于%i的解释,第1张

压栈顺序和求值顺序是2个概念,

c语言没有规定压栈顺序,

c语言也没有规定参数的求值顺序,

编译器自己发挥.

但是规定了在实际调用前存在一个序列点.

具体到这个问题,

参数在压栈前被求值,

但是具体先求

哪个参数就不一定了,

可以正着求可以反着求也可以跳着

求,

而且因为逗号之间不存在序列点,

那么4个i是在什么

时刻自加也是不一定的,

c语言能保证的只是当函数被实

际调用时,

4个i的所有自加运算完成.

这也符合c99"在相邻序列点之间的同一对象最多只能被修

改1次"之规定.

所以你的问题无统一解,以后要避免这种摸棱两可的写法.

ps:

这里指的副作用就是i的自加动作.

在C编程语言中,%d和%i是格式说明符,因为%d将变量类型指定为十进制,而%i将类型指定为整数。在使用方面,使用%d或%i打印数字时,printf()函数的输出没有差异,但使用scanf时会出现差异。scanf()函数使用%i检测基数,但假设基数为10,使用%d。