标题:[求助]关于自增加,自减运算符的问题
只看楼主
zsbliuzhen
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-8-2
 问题点数:0 回复次数:21 
[求助]关于自增加,自减运算符的问题
对于++, --,我到现在都不明白怎么个意思
今天输入的程序是
# 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
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
得分:0 

printf 里面是 从右至左!

及: 先执行i++,++i,i--。--i。


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-08-04 21:05
水漪儿
Rank: 2
来 自:shangshida
等 级:论坛游民
帖 子:147
专家分:10
注 册:2007-7-19
得分:0 
以下是引用I喜欢c在2007-8-4 21:05:16的发言:

printf 里面是 从右至左!

那我想问一下,如果是这样:
printf("%d",a,b);那输出的是a的值,还是b的值呀?
我在  Win-TC  和 TC3.0运行过,是a的值,这是不是和从右至左矛盾啊?

2007-08-04 21:44
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
得分:0 
先运算 然后再以参数形式传递给printf函数
而传递到printf函数中后才进行对应输出
2007-08-04 22:05
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
得分:0 

# 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);
}
i=i++:调用i的值赋给i,再使i的值加1,i=9
k=++i:先使i的值加1,再赋给k,i=10,k=10
j=--i:先使i的值减1,再赋给j,i=9,j=9
f=i--:调用i的值赋给f,再使i的值减1,i=8,f=9
输出为81099

++/--规律是:在变量前,先运算++/--,再调用;在变量后,先调用,后运算++/--
i+++j等同于(i++)+j

[此贴子已经被作者于2007-8-4 22:35:56编辑过]


↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-04 22:31
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
得分:0 
以下是引用水漪儿在2007-8-4 21:44:04的发言:

那我想问一下,如果是这样:
printf("%d",a,b);那输出的是a的值,还是b的值呀?
我在  Win-TC  和 TC3.0运行过,是a的值,这是不是和从右至左矛盾啊?


输出不是运算,没有从右到左的规则,一般是第一个格式字符对应第一个输出变量,格式字符少于输出变量则不输出后面多余的变量


↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-04 22:34
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
得分:0 
以下是引用I喜欢c在2007-8-4 21:05:16的发言:

printf 里面是 从右至左!

及: 先执行i++,++i,i--。--i。

真的假的?如果这样执行的话输出将是:810108


↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-04 22:37
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
得分:0 
答案让我想起了一个例题:
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

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

往下看,这个猜想是错的~~~

[此贴子已经被作者于2007-8-9 18:08:55编辑过]


↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-04 22:50
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
得分:0 
以下是引用leeldy在2007-8-4 22:37:28的发言:

真的假的?如果这样执行的话输出将是:810108

没错呀......

是这样的


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-08-04 23:44
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
得分:0 
以下是引用I喜欢c在2007-8-4 23:44:37的发言:

没错呀......

是这样的

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


↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-05 00:54



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




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

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