标题:[求助]关于自增加,自减运算符的问题
取消只看楼主
zsbliuzhen
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-8-2
 问题点数:0 回复次数:5 
[求助]关于自增加,自减运算符的问题
对于++, --,我到现在都不明白怎么个意思
今天输入的程序是
# include "stdio.h"
void main()
{
int i=8;
printf("%d%d%d%d\n",--i,i--,++i,i++);
}
得到的结果是8998
然后还有
# 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);
}
结果是
81099
蒙了,看教程看书全蒙了,实在是不明白自增自减什么意义,怎么用。。。。。。。
搜索更多相关主题的帖子: 运算符 void int include stdio 
2007-08-04 20:31
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
zsbliuzhen
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-8-2
得分:0 

。。。。。。我提的问题,你明白了


2007-08-09 19:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-160365-1-1.html




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

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