|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 为什么会显示这样的结果
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
709
人关注过本帖
标题:
为什么会显示这样的结果
只看楼主
加入收藏
ykyz310
等 级:
新手上路
帖 子:3
专家分:0
注 册:2009-11-9
楼主
收藏
问题点数:0 回复次数:9
为什么会显示这样的结果
小弟刚学习C 还请大虾们赐教
void main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
getch();
}
显示结果:15 24 8 8
为什么一个是15 尔而另外一个是24 ?
搜索更多相关主题的帖子:
结果
2009-11-10 15:32
举报帖子
使用道具
赠送鲜花
hsm8592
等 级:
论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
第
2
楼
收藏
得分:0
同样的贴子有很多 你收一下就知道了
2009-11-10 15:47
举报帖子
使用道具
赠送鲜花
xy4919961
等 级:
职业侠客
帖 子:199
专家分:362
注 册:2009-10-24
第
3
楼
收藏
得分:0
++j;j是先加1后用;
j=5从右向左先加1,j=6;然后在加1;j=7 再加 1;j=8;
所以q= 8+8+8;q=24;
i++;
i是先用后加1
所以 p=5+5+5; p=15;然后i再加3次1.所以 5+1+1+1=8;
楼主应该理解了吧。?
[
本帖最后由 xy4919961 于 2009-11-10 16:08 编辑
]
QQ群:96348241
2009-11-10 15:59
举报帖子
使用道具
赠送鲜花
tanghuang09
等 级:
新手上路
帖 子:3
专家分:0
注 册:2009-10-29
第
4
楼
收藏
得分:0
请楼主去看看各种运算符号的优先级就会明白了。自加符号实际有两种,一种叫postfix,一种叫prefix,与加号“+”的优先级为 ++(postfix),+,++(prefix),(从左往右依次优先级降低)。
不知我有没有讲清楚?
2009-11-10 16:38
举报帖子
使用道具
赠送鲜花
ykyz310
等 级:
新手上路
帖 子:3
专家分:0
注 册:2009-11-9
第
5
楼
收藏
得分:0
好像有点明白了~
2009-11-10 17:01
举报帖子
使用道具
赠送鲜花
fungqq
等 级:
新手上路
帖 子:9
专家分:0
注 册:2009-11-7
第
6
楼
收藏
得分:0
为什么在VC++6.0中输出为15 24 8 8 ?????
2009-11-10 20:52
举报帖子
使用道具
赠送鲜花
fungqq
等 级:
新手上路
帖 子:9
专家分:0
注 册:2009-11-7
第
7
楼
收藏
得分:0
发错了不好意思,我在VC++6.0中输出的是15 22 8 8 ,为什么会这样呢?
2009-11-10 20:55
举报帖子
使用道具
赠送鲜花
chrispull
等 级:
新手上路
帖 子:30
专家分:1
注 册:2009-8-31
第
8
楼
收藏
得分:0
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
对于 p=(i++)+(i++)+(i++):
i是先引用再自增。虽然有3个i++,但在引用的时候i都保持在5,所以计算p是相当于3个i相加(i没变,为5),p=15;
算完p后,i就要自增,但由于i自增了三次,所以i变为8.
对于q=(++j)+(++j)+(++j);同理,j先自增再引用。j自增了三次,先变成8,之后才是3个i相加(j变了,为8),p=24.
2009-11-10 20:56
举报帖子
使用道具
赠送鲜花
viky2003
等 级:
职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
第
9
楼
收藏
得分:0
p=(i++)+(i++)+(i++); q=(++j)+(++j)+(++j);
准确的说,这个是undefined的行为。
以上各楼把结合性和计算顺序弄混了。
以a+b+c
结合性从左到右的约束力是:必须先算a+b的结果,然后再+c。
而强调的是:a b c之间的计算顺序是没有定义的。
如果你觉得会先计算a 然后计算b再计算c然后加起来,那么你就错了。
至少编译器会告诉你,这样的行为想怎么算都可以。
这个例子:a[i++]+a[i++]+a[i++]会比较明显。那么每个a[i++]到底是那个元素,只有编译器知道。
要练习算法就来http:///!!有挑战哦!!
2009-11-10 20:59
举报帖子
使用道具
赠送鲜花
fungqq
等 级:
新手上路
帖 子:9
专家分:0
注 册:2009-11-7
第
10
楼
收藏
得分:0
回复 8楼 chrispull
我在VC++6.0中输出的是15 22 8 8 ,为什么会这样呢?
2009-11-10 21:18
举报帖子
使用道具
赠送鲜花
10
1/1页
1
快速回复:
为什么会显示这样的结果
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.032038 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved