不同编译运算顺序不一样,多试试。我用的是Code::Blocks 17.12,,其他编译器我不太清楚,先用Code::Blocks 17.12的规律讲,++i与--i不论什么位置,都受++i,--i,i++,i--的影响,都是加一完后运算后打印出来。而 i++,i--也是不论什么位置,都只受右边++i,--i,i++,i--的影响。不同的是,请看第二张图片printf("%d,%d,%d,%d,%d,%d",i++,i++,++i,++i);,为什么打印出来的是3,2,4,4。明明原理都一样, i++,i--是先运算再加一,所以先打印出运算了的,显示结果,是i++,i++,++i,++i中从左到右第二个i++运算的的是,++i,++i,第三第四的加一等于2,打印出来所以值为2,i++,i--是先运算再加一,所以运算继续,第二个打印完后,值继续运算加一了传给第一个i++所以值为3,此时先把运算结果3打印出来,但是加一还要继续,得4,但不打印,所以值为3,2,4,4.还有什么疑问的话可以一起探讨。