i++与++i的区别详解,小白来看

i++,与++i是我们经常用到的两个自增运算符,但是我们大多数人只了解i++先赋值后自增,++i先自增再赋值,但是究竟怎么赋值,到底什么时候先增却让我们这些小白们理不清,接下来先看一段代码:

int main(){
		int i=0,j=0,k=0;
		i++;
	    ++j;
	    printf("i = %d  j = %d  k=%d \n",i ,j,k++ );
	    return 0;
}

输出:i = 1 j = 1 k=0
从输出结果我们可以看出,j 和 i 各自增加1 k++没有变化

int main(){
	int i=0,j=0,a=0,b=0;
	a=i++;
	b=++j;
	printf("a=%d b=%d \n",a,b);
	printf("i=%d ",i);
	return 0;
}

输出:a=0 b=1
i=1
从输出结果我们可以看出,i++整体使用赋值给a,a=0不变,++j整体使用赋值给b,b增加1,i 单独使用值为1,

参照上面两段代码的输出结果,我们可以得出结论:

当i++,或++i,出现时如果整体使用i++,则i++返回未增加前的值,以后出现i++,则值依次递增1,如果整体使用++i,则值立即加1,以后出现++i,则值依次递增1,如果单独使用i,不管是i++,中的i,还是++i,中的i,此 i 的值立即加1;

大家可能看过这样一段代码:

int main(){
	int i=0;
	i=i++;
	printf("i  =  %d \n",i);

return 0;
}
 输出:  i  =  0

有人问这里的i为什么又输出0呢?大家学c语言一定要进得去,出的来,既然上面的已经了解到 i++ 整体使用返回的是未增加前的值,那么i++就是0,将0赋值给i,输出结果当然是0.

有人可能觉得上面的问题不是问题 ,很简单,但在学习c的过程中刚开始学习时看它确实就那样,很自然觉得为0,学着学着突然发现 i++不是不先增加吗?怎么用着用着发现 i 增加了,然后想啊想,看到有人说i++, 就是i=i+1,然后记住了,平时用着也没错,突然有一天看到这段代码了,这么简单 i++就是i=i+1啊,自然认为应该输出1,看着输出结果后…??为什么是0?虽然这个问题很简单到不想花时间思考,但总感觉智商被侮辱了,不爽…希望今天看到这篇文章后能解决你的一点点疑惑哦!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值