c语言问题。。

[复制链接]
查看11 | 回复2 | 2012-4-24 18:55:48 | 显示全部楼层 |阅读模式
i = 3.14*3*3;
/*编译时有警告*/ 是因为3.14*3*3结果为浮点型,若 i 为int型会有警告,精度降低了, i = (int)(3.14*3*3);是因为3.14*3*3已经强制转换为int型了x+a%3*(int)(x+y)%2/4 a%3=1, (int)(int)(x+y)=7,(int)a%3*(int)(x+y)%2=1 ,
(int)a%3*(int)(x+y)%2/4=0; (int) x+a%3*(int)(x+y)%2/4 =2 . 500000,(float)注意x是浮点型,最后一步是浮点型加整型当然为浮点型了。计算过程...
回复

使用道具 举报

千问 | 2012-4-24 18:55:48 | 显示全部楼层
i 定义为 int 类型了,而 3.14*3*3 则是 浮点型,类型不一致,所以有警告强制转换后,类型一致了,所以无警告浮点型就是会出现这么多0,可以用格式输出控制结果,例如printf("%.1f",x);也就是只输出小数点后一位数字,就只输出 2.5 了...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行