打印

unsigned char 和char 竟然不一样!

[复制链接]
4953|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无符号

使用特权

评论回复
5
coody| | 2010-12-3 13:23 | 只看该作者
unsigned char 和char 本来就不一样!char是有符号(正负)的, unsigned cahr无符号

使用特权

评论回复
6
ayb_ice| | 2010-12-3 13:26 | 只看该作者
本来就不一样
一般char signed char

有些编译器指定char 作为unsigned char

使用特权

评论回复
7
shiwilson| | 2010-12-3 17:03 | 只看该作者
还要多学C啊

使用特权

评论回复
8
NE5532| | 2010-12-3 17:07 | 只看该作者
本来就不一样,有符号数范围小一半。除非你定义了当汇编变量在用,不做计算,就看不出来。

使用特权

评论回复
9
土憋ㄘ`| | 2010-12-3 17:24 | 只看该作者
\\\\\\\\\\\\\\\\\\\\

使用特权

评论回复
10
logogcn| | 2010-12-3 21:06 | 只看该作者
;P

使用特权

评论回复
11
areshan|  楼主 | 2010-12-6 10:38 | 只看该作者
让大家见笑了,有时我懒得写unsigned ,没有想到编译返回的值竟然不一样!!!!!!

使用特权

评论回复
12
lianbus| | 2015-8-20 10:41 | 只看该作者
没想到5年后我也遇到这个问题,2进制补码,就是这东西,奇了怪了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

729

帖子

0

粉丝