以前置++和后置++为例

#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 的值。

Last modification:2021 年 03 月 26 日 22 : 22 : 11