在线等,急急急急急 关于数据类型的问题

2019-07-21 04:03发布

在线等   急急急急急急急             这几天我一直困扰一个问题       编译器keil     定义一个char t=0x81,printf(“t= %f”,t/1000);结果是多少?我算的结果是正的0.129,但是t有符号的,理论上结果应该是负数啊?   我特意用VC试了试       VC输出的结果就是-0.127                 单片机用补码表示负数    我求完补码,t补=0xff;在打印输出printf(“t= %f”,t/1000)结果是0.255,怎么都和理论的不一致呢?    我一直都没理解   求各位大神帮忙解答这个疑惑    感激不尽
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
jermy_z
1楼-- · 2019-07-22 01:58
回复【7楼】stm:
---------------------------------
呵呵
STM32VBT6
2楼-- · 2019-07-22 03:00
你c语言还不够过关啊,计算结果也跟编译器有关系的,keil跟vc不同是正常的。
char为有符号8位数,能表示-128~127,0x81即129,超过127,即用补码表示,反推得它的原码为-127。
vc里面-127/1000=-0.127,“/”即浮点的除法,小数正常;
keil里面当“/”两边都是整数时,结果为整数的商,余数没有了。所以结果应该是0.000000
都是些细节,把基础弄扎实点。
stm
3楼-- · 2019-07-22 05:35
 精彩回答 2  元偷偷看……

一周热门 更多>