i++和++i的区别

文章作者: Slyar 文章来源:Slyar Home ( www.slyar.com) 转载请注明,谢谢合作。

今天有同学问C语言中for循环里那个 i++ 和 ++i 是否有区别,我告诉他在for循环中是没有区别的,现在具体说一下 i++ 和 ++i 的区别。

我们先用while语句写一下 for(i=1;i<10;i++)

int i=0;
while (i<10){
printf("www.slyar.com");
i++;
}

用while语句写一下 for(i=1;i<10;++i)

int i=0;
while (i<10){
printf("www.slyar.com");
++i;
}

可以看到,最后i的值都是10,所以在for循环里,i++ 和 ++i 是没有区别的,那么区别在哪里呢?

现在我们再看一段程序:

#include<stdio.h>
int main(){
int i,x;

i=1;
x=1;
x=i++; //这里先让X变成i的值1,然后i加1
printf("%d ",x);

i=1;
x=1;
x=++i; //这里先让i加1,然后让X变成i的值2
printf("%d ",x);

system("pause");
return 0;
}

试着运行一下这段程序,发现结果是 1 2 ,这就是 i++ 和 ++i 的区别了:

i++  :先引用后增加

++i  :先增加后引用

具体是什么意思呢?就是

i++  :先在i所在的表达式中使用i的当前值,后让i加1

++i  :让i先加1,然后在i所在的表达式中使用i的新值

我想这样说大家就应该明白了。。。


以下评论值得注意:

  1. 2008年9月28日23:46 | #15

    ++i 比 i++更快

    Slyar 回复:

    这个是在循环中还是所有的都这样?

    felix021 回复:

    这个你需要去了解一下“匿名变量”...
    貌似是这样的:
    ++i 自增一次,然后返回自身的值
    i++ 创建一个匿名变量,自增一次,返回匿名变量的值

    如果你能把++运算符看成一个函数,那么会更好理解一点。

    //++i
    int operator ++(int &i){
    i = i + 1;
    return i;
    }

    //i++
    int operator ++ (int &i){
    int j = i;
    i = i + 1;
    return j;
    }

    Slyar 回复:

    恩恩,貌似是这样的。。。

    那个匿名变量在哪里工作?内存还是寄存器?

    felix021 回复:

    只是一个变量而已,变量都是存在内存中的。

  1. scorpio
    2011年6月9日00:28 | #3

    i++ 和 ++i 都是由汇编指令引申而来的
    ++i : i的值直接自加1, 没有额外的空间损耗
    i++ : i的值直接自加1, 但会开辟一个额外的空间存储i的值. 大概是因为需要为左值赋值吧
    这大概就是提倡用++i, 而不用i++的原因吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值