| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1725 人关注过本帖
标题:[求助]关于自增加,自减运算符的问题
只看楼主 加入收藏
小野猫
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-7-13
收藏
得分:0 
我用的是TURBO C 2.0 其结合性是从右到左
我在上面编了你的第一个程序,输出的结果是810108
和我原先预想的一样。
别的编译系统的结合性可能不一样,输出的结果当然也就不一样了。
请你在多试试。

2007-08-05 01:51
ladoumeng
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-5
收藏
得分:0 
搂主所说的应该是++和--的运算结果有什么不同吧``

家里蹲自学C大学
2007-08-05 06:51
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
以下是引用leeldy在2007-8-5 0:54:30的发言:

果然耶~~~谢谢,我自己用win-tc编译了一下,果然答案是810108
还是要实践啊~~~

才知道?

为什么不开始就自己运行下呢...

这样自己才能提高更快,回走很少弯路...


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-08-05 09:20
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
到处都在问这个,呵呵~

Fight  to win  or  die...
2007-08-05 10:46
totohack
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2007-7-15
收藏
得分:0 
QUOTE:
以下是引用I喜欢c在2007-8-5 9:20:27的发言:

才知道?

为什么不开始就自己运行下呢...

这样自己才能提高更快,回走很少弯路...


完全同意,学习就是这样,理论结合实际。

不结合实际,就象书上的代码照抄上去一样,有的不能编译

2007-08-05 13:02
totohack
Rank: 1
等 级:新手上路
帖 子:133
专家分:0
注 册:2007-7-15
收藏
得分:0 
LZ ,这是什么????

# include "stdio.h"
void
{
int i=8,k,j,f;
i=i++;
k=++i;
j=--i;
f=i--;
printf("%d%d%d%d\n",i,k,j,f);
}


下面的代码的结果是:7988 怎么解释?


/******************************/
/******dev-cpp v4.9.9.2********/
/******************************/

#include <stdio.h>

main()
{
int i=8,k,j,f;
i=i++;
k=++i;
j=--i;
f=i--;
printf("%d%d%d%d\n",i,k,j,f);
getchar();
}

[此贴子已经被作者于2007-8-5 13:14:43编辑过]


2007-08-05 13:12
zsbliuzhen
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-8-2
收藏
得分:0 
回复:(leeldy)答案让我想起了一个例题:i=3,k=(i++...
我按你想的写了一下 结果是12 不是9
如果是9的话估计我能明白自增自减到底什么东西了 但现在更迷糊了 我用的是VC 难道说是编辑器的差异??

2007-08-05 16:31
zsbliuzhen
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-8-2
收藏
得分:0 
以下是引用leeldy在2007-8-4 22:50:52的发言:
答案让我想起了一个例题:
i=3,k=(i++)+(i++)+(i++)
答案不是12,答案是9
先调用i=3参与运算,再调用三次i++

有次我有个想法:--i,i--,++i,i++ 是不是同上面看待成为在一个运算式内,再由2楼说的从右到左运算
先运算的是++i,所以第三个位置输出为9,i=9
再运算的是--i,所以第一个位置输出为8,i=8
再运算的是i++,所以第四个位置输出为8,i=9
再运算的是i--,所以第二个位置输出为9,i=8

所以输出为8998

我的书上对自增自减并没有做很深的说明,只是简单的介绍了下
不知我的猜想对否?

你这个例题有问题,()的优先级最高,如果是k=(i++)+(i++)+(i++)的话

等于说是k=(i+1)+(i+1)+(i+1)所以结果照样是12

我是在VC里面写的 不知道其他的编辑器是不是有有限级的差异


2007-08-05 16:58
zsbliuzhen
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-8-2
收藏
得分:0 
现在我差不多明白了自增自减的含义
应该是
i=i++ 把i的值赋给i,但i本身加1,这里i=8,i=9;
k=++i 先把i加1,然后赋给k,但i本身加1,这里k=10,i=10;
j=--i 先把i减1,然后赋给j,但i本身减1,这里j=9,i=9;
f=i-- 先把i赋给f,然后i本身减1,所以f=9,i=8;
所以结果显示81099
不知道我这样理解的对不对,如果不对还希望大家指出。

2007-08-05 17:05
zsbliuzhen
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-8-2
收藏
得分:0 
闷。。。。
#include "stdio.h"
main()
{
void i=8
printf("%d%d%d%d\n",--i,i--,++i,i++);
}
如果按照前面说的从右往左 那么结果应该是810108
如果按照从左往右 那么结果就应该是7777呀
我的结果是8998 是从哪往哪算的?

2007-08-05 17:15
快速回复:[求助]关于自增加,自减运算符的问题
数据加载中...
 
   



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

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