unsigned char 和char 竟然不一样!

[复制链接]
6294|11
 楼主| areshan 发表于 2010-12-3 11:12 | 显示全部楼层 |阅读模式
今天上午在调DS18B20的温度显示函数,先写的是返回char类型的数据,看手册时序,在和别人的程序比对,半天没有发现问题。最后把返回的值改成unsigned char类型就能正常显示了。想了半天也没有想明白unsiged char和char的区别,难道用char是编译器都给编译成了2进制补码???????
编译器是不是在处理数据时,把有符号的数据都给编译成2进制补码?
wzxmcu 发表于 2010-12-3 11:21 | 显示全部楼层
跟你的编译器有关,或者与编译器设置有关
liang7143 发表于 2010-12-3 13:01 | 显示全部楼层
unsiged char范围是0-255
但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的。有些编译器通过编译开关来指定它是有符号数还是无符号数
coody 发表于 2010-12-3 13:23 | 显示全部楼层
unsigned char 和char 本来就不一样!char是有符号(正负)的, unsigned cahr无符号
coody 发表于 2010-12-3 13:23 | 显示全部楼层
unsigned char 和char 本来就不一样!char是有符号(正负)的, unsigned cahr无符号
ayb_ice 发表于 2010-12-3 13:26 | 显示全部楼层
本来就不一样
一般char signed char

有些编译器指定char 作为unsigned char
shiwilson 发表于 2010-12-3 17:03 | 显示全部楼层
还要多学C啊
NE5532 发表于 2010-12-3 17:07 | 显示全部楼层
本来就不一样,有符号数范围小一半。除非你定义了当汇编变量在用,不做计算,就看不出来。
土憋ㄘ` 发表于 2010-12-3 17:24 | 显示全部楼层
\\\\\\\\\\\\\\\\\\\\
logogcn 发表于 2010-12-3 21:06 | 显示全部楼层
 楼主| areshan 发表于 2010-12-6 10:38 | 显示全部楼层
让大家见笑了,有时我懒得写unsigned ,没有想到编译返回的值竟然不一样!!!!!!
lianbus 发表于 2015-8-20 10:41 | 显示全部楼层
没想到5年后我也遇到这个问题,2进制补码,就是这东西,奇了怪了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

728

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部