关于 i++ 和 ++i 的区别

 i++ 和 ++i 的使用分为两种情况:1、单独使用;2、放入表达式中使用。

1、第一种情况,单独使用时从实现的效果(即程序的运行结果)上看是等价的。

2、当放入表达式中使用,则有本质区别:

b = ++i; 前缀形式,等价于 i = i + 1; b = i;

b = i++; 后缀形式,等价于 b = i; i = i + 1;


i++ 是先使用后自加,在结束标志时才加上1(;和,和函数()都是结束标志);而 ++i 则是先自加后使用。

i++ 可以替换成数值,++i 可以替换成变量。

例如:

#include <stdio.h>

int main()

{

    int i = 2;

    num = (++i) + (++i) + (++i) + (++i);

    printf("%d", i);

    return 0;

}

其中num = 4+4+5+6=19;


#include <stdio.h>

int main()

{

    int i = 2;

    i = i * ((i++) + (++i));

    printf("%d", i);

    return 0;

}

先算括号内i++在结束时加1,因++i 所以i 变为3,i = 3 * (3 + 3) = 18,18再加1为19。


#include <stdio.h>

int main()

{

    int i = 2;

    i = (i++) + (++i) + (i++) + (++i);

    printf("%d", i);

    return 0;

}

先是前两个因++i 所以i 为3,经第四++i 后 i 为4,所以为3+3+3+4=13,最后13+1+1=15。


#include <stdio.h>

void func(int a, int b)

{

    printf("a = %d\n", a);

    printf("b = %d\n", b);

}

int main()

{

    int i = 2;

    func(++i, i++);

    return 0;

}

func(++i, i++) 从右向左计算,经过i++,i = 2,中间经过逗号加1,i = 3,再经过++i,成为4。所以a = 4, b = 2。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页