[原创] 关于Keil C51中的数据类型转化问题

upc_arm   2012-2-18 12:25 楼主
我得到的结论是 只有=右边的结果不超出左边的数据类型的范围就不会有问题
float f = 123.456;
uchar a = 0, b = 0, c = 0;
a = f;    //a = 123
a = (uchar)f;    //a = 123
f = f - a;
f = f * 1000;    //f = 456.0013 仿真结果
b = (uchar)f;   //456 超出uchar的范围 所以有问题 b = 456 % 256 = 200
b = (uchar)(f / 100);  // b = 4
b = (f / 100);               // b = 4  

b = (uchar)((uint)f / 100);    // b = 4  


a = f / 100;  //a = 2
b = (int)f % 100 /10; //b = 3
c = (int)f % 10;   //c = 4

以上为个人见解,有问题欢迎大家指出来。

[ 本帖最后由 upc_arm 于 2012-2-19 18:04 编辑 ]

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复