| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 964 人关注过本帖
标题:不知道原理,求帮助
只看楼主 加入收藏
qweiuy566
Rank: 2
等 级:论坛游民
帖 子:48
专家分:19
注 册:2016-1-27
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:4 
不知道原理,求帮助
#include<stdio.h>
#define M 3
#define N M+1
#define NN N*N/2
main()
{
    printf("%d\n",NN);
   
    printf("%d\n",5*NN);
}

结果出来后是    6
                18

百度了一下:是因为只能够直接带入进去  

 NN=N*N/2=M+1*M+1/2=3+1*3+1/2=3+3+0=6

如上看到的:M+M+1/2=3+3+0=6  我以为是后面的%d导致只能输出整数,1/2是0.5所以不能输出,
自己又改了一下:
#include<stdio.h>
#define M 3
#define N M+1
#define NN N*N/2
main()
{
    printf("%f\n",(float)NN);

    printf("%f\n",(float)5*NN);
}
结果输出的是    6.000000   
                18.000000
不明白,求帮忙
1/2那里为什么是0了?我改成float形式为什么没有变成6.5?

[此贴子已经被作者于2016-1-28 21:30编辑过]

搜索更多相关主题的帖子: include 百度 
2016-01-28 21:20
窗前的茶
Rank: 2
来 自:北京
等 级:论坛游民
帖 子:24
专家分:34
注 册:2016-1-20
收藏
得分:2 
1和2 是整型,相除小数部分被省去。
这是C语言规定的啊
1.0/2就是0.5了
2016-01-28 21:28
qweiuy566
Rank: 2
等 级:论坛游民
帖 子:48
专家分:19
注 册:2016-1-27
收藏
得分:0 
回复 2楼 窗前的茶
那我改成float形式应该是6.5啊,可是还是6

吾道不孤
2016-01-28 21:30
窗前的茶
Rank: 2
来 自:北京
等 级:论坛游民
帖 子:24
专家分:34
注 册:2016-1-20
收藏
得分:2 
回复 3楼 qweiuy566
。。。
1/2计算了是不是0啊
你改成float只是最后一步输出的时候是浮点而已= =
2016-01-28 21:33
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
收藏
得分:6 
#define NN N*N/2.0  //这样即可
2016-01-28 21:42
快速回复:不知道原理,求帮助
数据加载中...
 
   



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

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