OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7854|回复: 4

keil5里面char默认是unsigned char?

[复制链接]

52

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
691
金钱
691
注册时间
2014-9-7
在线时间
121 小时
发表于 2017-10-13 15:07:35 | 显示全部楼层 |阅读模式
keil5里面char默认是unsigned char?
我实践证明是这样的
改成了signed char就好了,不知道是编译器默认的还是不知道我那个文件里面有定义了?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2017-10-12
在线时间
83 小时
发表于 2017-10-13 15:53:58 | 显示全部楼层
尽量用u8和s8吧。Keil工程里可以指定缺省的char到底有没有符号,如下图:
chars.jpg
回复 支持 1 反对 0

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2017-10-13 15:30:09 | 显示全部楼层
字符是char
8位数据请使用 uint8_t 或 int8_t (stdint.h)

char的默认类型不同的编译器默认不同,且可以由用户配置。
甚至在某16位的DSP芯片上面, char竟然是16位的。
RT-Thread RTOS 音频,WIFI,蓝牙
回复 支持 反对

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2017-10-13 15:34:44 | 显示全部楼层
C语言标准根本就没有说明char到底应该是signed还是unsigned。

所以,ARMCC编译器认为char是signed还是unsigned本质上都没有任何错误(如果你一厢情愿认为char应该signed就是你的问题了。。。)。

你说的没错,ARMCC的确认为char默认是unsigned。

严谨一点:不管什么时候使用char,或者short,或者int,都应该指明是signed还是unsigned。
电子爱好者
回复 支持 反对

使用道具 举报

52

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
691
金钱
691
注册时间
2014-9-7
在线时间
121 小时
 楼主| 发表于 2017-10-16 14:25:57 | 显示全部楼层
感谢大家回答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 10:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表