正文共:1062 字 3 图。预计阅读时间: 3 分钟。
源世界原创,转载抄袭必究!
说明一下:
C语言学习是一个长期的过程,坚持固然能成功。但是一味的看知识点,不去思考就无法进步了,现在我的打算就是写一点深入浅出的文章,就不做知识的搬运了,没意思。书本上的基本知识是你必须要掌握的,如果想要一些电子书籍的可以私信我。今天我们就来探讨一下C语言“i++”与"++i”的区别,是探讨,有什么问题可以直接评论,不要钱的。注意:一下的实例均在vs2010编译环境中,其他环境自测。
1:在for循环中的区别
思考:for循环中i++与++i有区别吗?
实例:通过自加算出从0~100的结果,本着简单原则。
#include<stdio.h>
int main()
{
int i=0,n=0,m=0;
for(i=0;i<=100;i++)
{
m=m+1;
}
for(i=0;i<=100;++i)
{
n=n+1;
}
printf("%d\n",m);
printf("%d\n",n);
return 0;
}
运行结果:没有区别。
2.诠释i++与++i的含义
单独使用时:
a=i++化解为:a=i;i=i+1;就是先到用i的值然后再i自加。
简单记住:i++先调用再自加。
a=++1化解为:i=i+1;a=i;就是先自加在调用i的值。
简单记住:++i先自加再调用。
一张图片说明问题:
3.为什么会有i++与++i的区别
要想搞清楚这个问题,我们先需要了解一个概念:什么是左值?
左值:左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。左值与右值的根本区别在于是允许取地址&运算符获得对应的内存地址。
=是赋值运算符,它的作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。这里是用变量作左值,指针和引用也可以作左值。例如:int a, b, c;a=3;b=4; c = ( a + b )*(2*a - b) // 得出14
a=++i;知道++i是左值,这就是他们的区别所在;一般情况下:通过优先级来说:++i的优先级高于i++.而且++i是原地操作,效率比i++高一点。
4.总结:
在实际运用中,我们都不怎么管i++与++i,研究这些并不无聊,只有通过深入思考这些入微的问题,才会有新的突破与收获,以上的仅仅是个人观点,有什么问题尽管补充,免费。
关注我们:源世界Z
关注公众号每天收听我们的消息,源世界为您奉上精品文章。欢迎订阅点赞,谢谢!
网友评论