| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:自增ii++与自减i--。。。。。。。
只看楼主 加入收藏
钩魂天蝎
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-9-5
收藏
 问题点数:0 回复次数:6 
自增ii++与自减i--。。。。。。。

再次发现问题。。。嘿嘿~~~~~

1.
#include<stdio.h>
void main()
{
int i=3,j;
j=(i++)+(i++)+(i++);
printf ("j=%d,i=%d\n",j,i);
}

为什么在Turbo C++ 3.0下运行得出j=9?不是12嘛?书上说软件问题,是这样么?

[此贴子已经被作者于2006-9-12 18:07:50编辑过]

2006-09-12 18:03
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
得分:0 
有的编译器运算顺序不一样的啊

" target="_blank">God Bless You[GLOW=255,#00ff00,2]My Friends![/GLOW]
2006-09-12 18:27
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

嗯 的确是和不同的软件的执行顺序有关
一般来讲 i++ 意思是先赋值然后本身加1

j=(i++)+(i++)+(i++) 等价于
j=i+i+i;
i=i+1;
i=i+1;
i=i+1;

你理解的是i++出现三次应该自加三次 像((i++)++)++ ?
注意加号是并列的关系,一个表达式中对i的操作都是在原始的i上操作的

[此贴子已经被作者于2006-9-12 19:02:09编辑过]


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-09-12 18:57
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 
j=3+3+3

你说等于多少?

[QUOTE]嗯 的确是和不同的软件的执行顺序有关
一般来讲 i++ 意思是先赋值然后本身加1

j=(i++)+(i++)+(i++) 等价于
j=i+i+i;
i=i+1;
i=i+1;
i=i+1;
[/QUOTE]

注意是加了括号的。

由于工作,N久都没来了!
2006-09-12 21:13
爱上夜
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-9-12
收藏
得分:0 
具体的讲应该是i先参加运算,也就是j=3+3+3然后i在自增  如果是++i那么就是i先运算在运算j=6+6+6

2006-09-13 00:11
zhufeifei
Rank: 1
等 级:新手上路
威 望:2
帖 子:402
专家分:0
注 册:2006-8-11
收藏
得分:0 

i++的++i不同在于,前者是执行运算,后在自身加1,而不是总的结果加1.后者就先自身i加1,再来执行运算?上面的题就是前者的情况,其实就是等于9,不是什么问题?因为不关i的事,要求的是和j.
不知道是不是这样,我也是位初学者!呵呵!


在不断的拼搏与进取中,定能创造一片天地!
2006-09-13 13:54
神经塔
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1987
专家分:4
注 册:2006-7-1
收藏
得分:0 

编译器的不同,结果也是不相同的!但是你自己掌握到原理之后,所有的问题都会迎刃而解的!


[shadow=255,red,2]待到秋来九月八,我花开时百花杀。冲天香阵透长安,满城尽是黄金甲。 [/shadow]
2006-09-13 19:04
快速回复:自增ii++与自减i--。。。。。。。
数据加载中...
 
   



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

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