| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 515 人关注过本帖
标题:请问如下过程的执行结果为什么不一样?
只看楼主 加入收藏
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
 问题点数:0 回复次数:9 
请问如下过程的执行结果为什么不一样?
#include<stdio.h>
#include<stdlib.h>
#include <conio.h>
#define fudge(k) k+3.1
#define pr(a) printf("a=%d\t",(int)a)
main()
{
printf("a=%f\t",fudge(2));
pr(fudge(2));
}
一个是a=5.100000一个是a=很大的数,是溢出了吗?但是不知道这两个哪里不一样呀谢谢 了

[[it] 本帖最后由 lqlayy 于 2008-4-18 14:03 编辑 [/it]]
搜索更多相关主题的帖子: 结果 
2008-04-18 13:45
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:0 
要细心 要严谨
首先是5.1不是6.2

#define pr(a) printf("a=%d\t",(int)a)
这里的问题比较复杂
pr(fudge(2));
分解
printf("a=%d\t",(int)fudge(2));
继续分解
printf("a=%d\t",(int)2+3.1);
(int)2+3.1类型是double
你的输出格式是%d 这里错了

How are you 怎么是你?
How old are you   怎么老是你?
2008-04-18 13:54
lvyan
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-4-8
收藏
得分:0 
你定义的x没有用到..
  重点是:  
  #define pr(a) printf("a=%d\t",(int)a)  
   这里的(int)a 会替换成 (int)k+3.1 这样会输出5.1, 但你用%d输出就错了.
   改成 (int)(k+3.1)  OK;
2008-04-18 13:59
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
得分:0 
上面结果是写错了,是应该5.1不过下面的,我就是要用%d输入,我就是想问为什么(int)(2+3.1)以%d输入时就为很大的一个数了?谢谢了

学习编程的秘诀是:编程,编程,再编程;
2008-04-18 13:59
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
得分:0 
我想问一下为什么(int)fundge(2)的结果是(int)2+3.1而不是(int)(2+3.1),谢谢了

学习编程的秘诀是:编程,编程,再编程;
2008-04-18 14:02
lvyan
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-4-8
收藏
得分:0 
貌似你连输入输出都没搞清楚啊!
你定义的宏 fundge(k) 为 k+3.1
 在正式编译之前预处理会将程序中有fundge(k)地方进行替换..
  只是很单纯的字符替换.
2008-04-18 14:31
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
得分:0 
明白 了,谢谢 了

学习编程的秘诀是:编程,编程,再编程;
2008-04-18 14:43
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
类型转换问题。有一个转换优先级,从char-int-float-double从左到右,如果你反着来结果就不对了。
2008-04-18 17:01
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
宏仅作文本替换,并不作计算,所以要小心使用。

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-04-18 20:42
lqlayy
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-3-15
收藏
得分:0 
谢谢大家了

学习编程的秘诀是:编程,编程,再编程;
2008-04-21 12:25
快速回复:请问如下过程的执行结果为什么不一样?
数据加载中...
 
   



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

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