| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 725 人关注过本帖
标题:为什么 c 的值为 1 ???
只看楼主 加入收藏
胖嘟嘟
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2014-4-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
为什么 c 的值为 1 ???
#include<stdio.h>
void main()
{
int a=8,b=5,c;
c=a/b+0.4;
printf("%d\n",c);


}
2014-05-06 22:12
破灬王
Rank: 2
等 级:论坛游民
帖 子:12
专家分:18
注 册:2014-1-17
收藏
得分:3 
8除以5等于1.6 1.6+0.4=2
在C语言上8除以5等于1  所以你懂的
2014-05-06 22:24
胖嘟嘟
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2014-4-18
收藏
得分:0 
回复 2 楼 破灬王
我就是想问小数为什么不算了??
2014-05-06 22:27
向1505057584
Rank: 2
等 级:论坛游民
帖 子:7
专家分:25
注 册:2014-5-6
收藏
得分:3 
因为a/b,两个数都是int型,所以结果也是int型,直接把小数舍去,C语言没有进位说法
2014-05-06 22:50
寂__痴
Rank: 2
等 级:论坛游民
帖 子:34
专家分:23
注 册:2014-4-25
收藏
得分:3 
C语言不像一般数学上的四则运算,可以自由把握小数点。C语言有严格的类型规则。int型(整数运算) float型 (有小数点的运算)等。计算机会自动按照你所定义的类型来运算。float型赋值给int型,就会先对float型取整再把整数部分赋值给变量;int型赋值给float型,就会数值不变,然后把数值以浮点数形式赋值给变量。

C语言之路,慢慢走,慢慢领悟,才是硬道理!
2014-05-07 00:07
蝌蚪变青蛙
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-4-26
收藏
得分:3 
/ 运算符的结果是根据被除数和除数的类型来决定的。
如果被除数和除数都是int类型,则商是int类型,如果有小数部分,截取。例:3/2 = 1 //而不是1.5
如果被除数和除数有一个或两个都是浮点型(float/double),则商是浮点型。

楼主看书仔细点。。。
2014-05-07 00:37
buddy_zhang
Rank: 2
等 级:论坛游民
帖 子:33
专家分:24
注 册:2014-5-7
收藏
得分:3 
c=a/b+0.4;
(1)a和b 都是int型,a/b的值是1,而是不是1.6
(2)然后加0.4的时候发生类型提升变成double,此时是1.0+0.4=1.4。
(3)然后是赋值语句,由于左值是int,所以右值被提升为int型,所以c的值为1。

printf("%d\n",c);
//printf的%d是int型,c的类型也必须提升为int型,所以最后输出值为1。
2014-05-07 11:00
tof
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2014-5-7
收藏
得分:3 
比我还新的新手.
2014-05-07 11:09
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:3 
c是整型变量, 在计算b/a的时候是直接得到1, 而不是得到1.6.  C对于这方面的运算是直接舍去,而不是四舍五入.

代码测试环境:  WinXP+C-Free5.0.
2014-05-07 20:28
一心向佛
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2014-5-4
收藏
得分:3 
7楼解释很详细
2014-05-07 20:40
快速回复:为什么 c 的值为 1 ???
数据加载中...
 
   



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

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