| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1343 人关注过本帖, 1 人收藏
标题:i++和++i的老问题!
只看楼主 加入收藏
szw982
Rank: 2
来 自:和谐社会
等 级:论坛游民
帖 子:80
专家分:34
注 册:2010-8-18
结帖率:100%
收藏(1)
已结贴  问题点数:100 回复次数:10 
i++和++i的老问题!
(1) i=3                (2) i=3              (3) i=3                (4) i=3            
    j=i++                  j=++i                j=i++                  j=++i
    s=++i                  s=i++                j=++i                  j=i++
结果:                 结果:               结果:                 结果:
    j=3                    j=4                  j=5                    j=4
    s=5                    s=4                  j=5                    j=4
问题1:
(1)中程序执行完j=i++后,是不是i=4了?然后程序把++i(4+1)的值赋给s?

问题2:
如果问题(1),为什么(3)中结果会不一样?(3)中执行过程是怎样的?

问题3:
j=++i的意思是说i的值先变成4,再赋给j,j的值为4,此时i的值是3还是4?s=i++是先将i的值3赋给s,即j的值为3,然后i变成4.
那为什么结果s≠3,而s=4?是不是j=++i之后,i的值已经是4?


2010-09-07 17:38
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
收藏
得分:14 
#include<stdio.h>
#include<stdlib.h>
main()
{
      int i=3,j;
     j=i++;
     printf("%d ",j);
     j=++i;
      printf("%d ",j);
      system("pause");
}你的第(3)是怎么出来的?上面这个的结果是3 5
j=i++==j=i;i=i+1;
j=++i==i=i+1;j=i;
2010-09-07 18:06
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:14 
感觉楼主犯了不是一般低级的错误

是你输出的问题
能够猜出楼主都是   最后  进行输出的  
当然都用最后一个此变量
(3)输出2个j当然都是5
++i是i先加一在进行运算
i++是它所在语句执行结束后,i=i+1

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-09-07 18:12
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:14 
回复 楼主 szw982
LZ还是基础不扎实啊,这样的问题直接找谭爷爷的教材来翻翻就好!!!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-07 18:19
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:14 
高手们都已经解决了,不过再次提醒楼主:
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;

如果实在搞不明白++ --怎么回事,那也不是什么事。
因为a=++i完全可以写成 i++; a=i。
a=i++完全可以写成 a=i; i++。

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-09-07 19:07
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:14 
楼主记住一点就是:++i是先自加后使用自加后的i 值  而i++是先用i的初始值在把i的值增加1
楼主这个知识点肯定知道吧!关键是理解
2010-09-07 19:43
燕强
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:78
专家分:188
注 册:2010-8-11
收藏
得分:14 
以下是引用sunyh1999在2010-9-7 19:07:16的发言:

高手们都已经解决了,不过再次提醒楼主:
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;

如果实在搞不明白++ --怎么回事,那也不是什么事。
因为a=++i完全可以写成 i++; a=i。
a=i++完全可以写成 a=i; i++。
很详细的讲解。
2010-09-07 20:56
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:14 
(1) i=3     //i3  j   s      (2) i=3   //i3  j   s    (3) i=3   // i3 j    (4) i=3  // i3  j         
    j=i++   //j3  i4  s          j=++i // i4  j4  s       j=i++  //j3 i4       j=++i//i4  j4
    s=++i   // s5  j3  i5        s=i++ // s4  i5  j4      j=++i // i5 j5       j=i++//j4 i5
结果:                            结果:                   结果:                 结果:
    j=3                             j=4                     j=5                    j=4
    s=5                             s=4                     j=5                    j=4

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-09-07 23:55
szw982
Rank: 2
来 自:和谐社会
等 级:论坛游民
帖 子:80
专家分:34
注 册:2010-8-18
收藏
得分:0 
谭爷爷的看了,三版的第57页
最后还是看你们的看懂的.

请给我结果 我要改变任人摆布的人生!
2010-09-08 15:15
yxxabc
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-9-8
收藏
得分:0 
热心的人多,没有来错
2010-09-08 16:24
快速回复:i++和++i的老问题!
数据加载中...
 
   



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

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