最近遇到一个问题,按照网上说的,按照printf()参数从右往左运算,但是编译器显示的结果总是不正确,就小研究了一下,发现还有其他的顺序在里面。
如果第一个参数和第二个参数的结果不是同一个对象,确实是从右往左计算的,例子如下:
例1:
#include <stdio.h>
int main(){
int a = 5, b = 2;
printf("%d,%d",b=a+1,a=a+1);
return 0;
}
运算结果:
运算结果是:7,6,先算右边,再算左边。
但是如果遇到i++,i,++i同时作为printf参数时,还有其他规则。接下来请看。
例2:
#include <stdio.h>
int main(){
int i = 2;
printf("%d,%d,%d,%d\n",i++,++i,i,i++);
return 0;
}
如果按照从右往左的规则计算,