以前置++和后置++为例
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i = 0;
printf("%d\n",i++); //0
i = 0;
printf("%d\n",++i); //1
i = 0;
printf("%d %d\n",i,i++); // 1 0
i = 0;
printf("%d %d\n",i++,i); // 0 1
i = 0;
printf("%d %d\n",i,++i); // 1 1
i = 0;
printf("%d %d\n",++i,i); // 1 1
i = 0;
printf("%d %d\n",i++,++i); // 1 2
i = 0;
printf("%d %d\n",++i,i++); // 2 0
i = 0;
printf("%d %d\n",++i,++i); // 2 2
i = 0;
printf("%d %d\n",i++,i++); // 1 0
i = 0;
printf("%d %d %d\n",i++,i,++i); // 1 2 2
i = 0;
printf("%d %d %d\n",i,++i,i++); // 2 2 0
i = 0;
printf("%d %d %d\n",++i,++i,++i); // 3 3 3
i = 0;
printf("%d %d %d\n",i,i++,i++); // 2 1 0
return 0;
}
总结
1.printf函数中参数的运算顺序为:从右往左。
2.遇到后置++,直接返回当前 i 值。
3.遇到 i ,不参加运算也不返回当前值。
4.遇到前置++,参加自增1的运算,但不返回运算后的值。
5.从右往左全部运算结束后, i 和 ++i 的位置上返回最终 i 的值。
本文链接:https://shengto.top/c/C_printf_precedence.html
转载时须注明出处及本声明