理解一元运算符优先级

时间:2014-08-23 00:11:13

标签: c

遇到C问题并理解编译器如何处理此代码

#include <stdio.h>

int j=0;

int main(int argc, char *argv[]){
printf("%d %d %d %d %d\n",j++, j*5, j++,  j++,  j);
}

嗨,好吧基本上我想了解这里发生了什么?

当我编译并运行时,我得到了这个结果

2 10 1 0 0

我不清楚编译器究竟在做什么,为什么数字会这样改变?首先要做哪一个,为什么有些报告0,而其他2报告3?

1 个答案:

答案 0 :(得分:0)

正在处理这些条目。我不是100%,但我认为没有设置printf()语句的参数处理顺序,因此结果是不可预测的(从编译器到编译器)。