|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 数据结构与算法 』
→ 求助 为什么输出的是150
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
533
人关注过本帖
标题:
求助 为什么输出的是150
只看楼主
加入收藏
lokemao
等 级:
新手上路
帖 子:2
专家分:0
注 册:2012-9-28
结帖率:
0
楼主
收藏
已结贴
√
问题点数:20 回复次数:4
求助 为什么输出的是150
#include<stdio.h>
#define edcu(x) x*x*x
int main()
{
int x = 3;
printf("%d\n",edcu(++x));
return 0;
}
搜索更多相关主题的帖子:
include
150
return
2012-09-28 20:57
举报帖子
使用道具
赠送鲜花
lokemao
等 级:
新手上路
帖 子:2
专家分:0
注 册:2012-9-28
第
2
楼
收藏
得分:0
回复 楼主 lokemao
是不是问题太简单了。 但我纠结很久了 我用到是ubuntu
2012-09-28 21:13
举报帖子
使用道具
赠送鲜花
寒风中的细雨
等 级:
贵宾
威 望:
66
帖 子:1710
专家分:8645
注 册:2009-9-15
第
3
楼
收藏
得分:10
这个需要看编译器的具体实现
x = 3
y = ++x * ++x * ++x;
150 猜测的实现
(150)
/ \
(25)
++x
/
\
++x
++x
2012-09-28 22:32
举报帖子
使用道具
赠送鲜花
寒风中的细雨
等 级:
贵宾
威 望:
66
帖 子:1710
专家分:8645
注 册:2009-9-15
第
4
楼
收藏
得分:0
回复 2楼 lokemao
表达式中 不应该出现这样的语句
考试另当别论
2012-09-28 22:34
举报帖子
使用道具
赠送鲜花
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
5
楼
收藏
得分:10
未定义行为。一种合理的猜测就是3楼的那样。
宏展开之后是:++x * ++x * ++x
按照结合规则,语义上等价于 (++x * ++x) * ++x
但这里由于违背了一个变量在相临顺序点中最多更改一次值的要求,因此是未定义行为。副作用发生的确切时机也不能断言。
4*4*4, 4*5*4, 6*5*4 之类的这些结果都算合情合理。就算编译器报语法错误也可以接受。
2012-09-29 07:46
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
求助 为什么输出的是150
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.018345 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved