| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1478 人关注过本帖
标题:i++,J---问题
只看楼主 加入收藏
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:2 
对于C语言中的"++"和“--”运算符,确实是C语言的一大特色,但也是很容易让新手迷惑的地方。
新手在学习C语言的过程中对它感到困难,大家要理解,想当初,我们自己在学习这里的时候,不也是很费神的吗?

我提供一些理解,供楼主参考,希望楼主尽快突破它。
以下面的句子为例:
printf("%d,%d",i++,j--);
printf("%d,%d",++i,--j);
这里的"i++"、"j--"、"++i"、"--j"都是要被取值的表达式,相当于赋值表达式中的右边的部分,
这种情况下,对于表达式"i++" ,系统内部实际上有两个动作:读取变量i的值,做相应的用途,然后再把变量i的值自加1
对于表达式"j--",处理情况类拟,只是后面的动作是变量j的值自减1。
但对于"++i",系统内部也是执行两个动作,但执行的先后顺序跟"i++"刚好相反:先把变量i的值自加1,然后再读取变量i的值,做相应的用途。对于"--j",情况与"++i"类似,只是变量j的值先自减1。

再看下面的例子:
for(i=0;i<10;i++)printf("%d\t",i);
for(i=0;i<10;++i)printf("%d\t",i);
对于这两个例子,它们的效果是一样的,没有差别。为什么呢?
在这两个例子中,"i++"、"++i"都是作为一个独立的语句,并没有其它用途需要从它们那儿取值,所以这两个语句就少了一个被取值的动作,只剩下变量自加1了,当然就没区别了。
也许大家会看到,在这两个语句中,都是"i<10"表达式,要取变量i的值呀,没错,但这已经是另外一条语句了。

大家再看下面的例子:
for(i=0;i++<10;)printf("%d\t",i);
for(i=0;++i<10;)printf("%d\t",i);
这两个语句,就有差别了,原因跟前面第一个例子一样。

做自己喜欢的事!
2012-07-07 23:56
快速回复:i++,J---问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014129 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved