书上看到的一个例子,放在这里消化一下。

如下的一段程序:

 

期待的运行结果是:第一个64400, 第二个1932。

结果运行结果是:

 

解析:

错误1:

Short的最大长度是32767, 把64400赋给它,当然会报错了。所以输出了不可预知的数字。

现在改一下程序:

运行结果如下:

第一个结果对了。

第二个应该是1932,怎么少了1块五?

 

错误2:

QuarterSold是long int, 150也是int,所以结果会被认为是int,也就是没有小数点。

64400除以150等于429.333,结果.333被抹掉了,这就是为什么最后结果少了1.5.

现在我们把程序改一下,强制将分子转换成float。

这次运行结果正确了。

 

当然也可以用隐性类型转换技术,隐性转换的规则很多,这里就不说了。

posted on 2012-12-01 18:43  今夜太冷  阅读(584)  评论(0编辑  收藏  举报