c语言关于%i的解释

Python012

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

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

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

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

编译器自己发挥.

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

具体到这个问题,

参数在压栈前被求值,

但是具体先求

哪个参数就不一定了,

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

求,

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

那么4个i是在什么

时刻自加也是不一定的,

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

际调用时,

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

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

改1次"之规定.

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

ps:

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

没听过%i的

printf("%d %f %s %c")这就看过

%i真不知道 不会是对i求余吧。。

int i=1

int a=5%i....?

在printf中这两者没有区别

但是在scanf中略有不同

比如scanf("%i%d",&a,&b)

如果你输入

012

012

之后a=12

,b=10

%i会把八进制和十六进制转换成十进制后写入