| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 841 人关注过本帖
标题:问一个关于宏的问题
只看楼主 加入收藏
nsynczy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-1-5
收藏
 问题点数:0 回复次数:16 
问一个关于宏的问题
#include<stdio.h>
#define CUBE(x)(x*x*x)
main()
{
int x,y;
x=5;
y=CUBE(++x);
printf("%d\n",y);
}
我看到书上说y的值应该是x自加三次后立方,即8*8*8=512,
但是我调试的时候结果却是392,为什么会是这个结果啊,望大虾们帮忙,谢谢!!
搜索更多相关主题的帖子: 立方 include 
2007-01-06 14:40
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

应该是336吧
CUBE(++x) 相当于, ((++x)*(++x)*(++x))
我们来一步一步算:x=5
((++x)*(++x)*(++x))
一:((6)*(++x)*(++x)) 这个时侯x=6
二:((6)*(7)*(++x)) 这个时侯x=7
三:((42)*(++x))
四:((42)*(8)) 这个时侯x=8
结果:336



wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-01-06 15:05
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
呵呵,那为什么运行之后是392呢?我用的是gcc

该学习了。。。
2007-01-06 15:07
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
我用的是TC2.0
按步骤就是这样的,
你能不能给出更好的解释?

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-01-06 15:11
wyzn12
Rank: 1
等 级:新手上路
帖 子:129
专家分:0
注 册:2006-10-28
收藏
得分:0 
我用tc运行出来的是512

新王登基,血流成河!
2007-01-06 15:19
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
楼主是不是用C-FREE,

谁有强殖装甲第二部,可以Q我460054868
2007-01-06 15:25
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
#include<stdio.h>
#define CUBE(x) (x*x*x)
main()
{
int x;
clrscr();
x=5;
printf("%d\n",CUBE(++x));
getch();
}
结果:
336

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-01-06 15:27
myisgood
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-12-25
收藏
得分:0 
include<stdio.h>
#define CUBE(x)(x*x*x)---------(++x)(++x*++x*++x)
main() ++运算符运算顺序是自右从左~
{ 就是乘法* 自己去看运算级别
int x,y; ((++x*++x)*++x)
x=5; 7*7*8=392
y=CUBE(++x);
printf("%d\n",y);
}
2007-01-06 15:29
myisgood
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-12-25
收藏
得分:0 
# include <stdio.h>
#define CUBE(x) (x*(x*x))
void main()
{
int x,y;
x=5;
y=CUBE(++x);
printf("%d\n",y);
}
是 512~~~
2007-01-06 15:34
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
如果是:512
(++x*++x*++x)
++ 的优先级 比 * 高 就
把所的 ++ 做完再做 *
那就是(8*8*8)

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-01-06 15:40
快速回复:问一个关于宏的问题
数据加载中...
 
   



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

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