本人自学C语言时,遇到了一些问题,望高人指点一下。

[复制链接]
查看11 | 回复4 | 2007-2-9 14:29:41 | 显示全部楼层 |阅读模式
问题就在于s=1/2*(a+b+c);从左到右执行运算,1和2都是整型,于是1/2就成了0了,再乘个(a+b+c)不管怎样s都为0。而写成1.0后,1.0/2就是浮点数与整数的混合运算,会自动将整型数转换成浮点数再参与运算,于是就得到你想要的结果0.5。
回复

使用道具 举报

千问 | 2007-2-9 14:29:41 | 显示全部楼层
这是一个求三角形面积的程序 你定义的变量都是浮点型的数据 1/2的结果是个整形数据 而且结果默认是0 所以你的area的结果是0当变成1.0/2的时候结果就默认为浮点型数据了
回复

使用道具 举报

千问 | 2007-2-9 14:29:41 | 显示全部楼层
你的式子是S=1/2*(a+b+c)根据运算规则先算1/2=0,0*(a+b+c)结果便为0。00。你就错在1/2上,两整数相除,结果还是为整数。所以你把1变成1。0后结果是正确的,因为1。0/2结果为小数型。参考资料:初学教材

已赞过已踩过<
回复

使用道具 举报

千问 | 2007-2-9 14:29:41 | 显示全部楼层
运算符的优先级别试试s=1.0/(2*(a+b+c));
回复

使用道具 举报

千问 | 2007-2-9 14:29:41 | 显示全部楼层
从左到右执行运算,1和2都是整型,于是1/2就成了0了,再乘个(a+b+c)不管怎样s都为0。sqrt()似乎只能开整数的方……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行