keil5里面char默认是unsigned char?

2019-08-13 19:16发布

keil5里面char默认是unsigned char?
我实践证明是这样的
改成了signed char就好了,不知道是编译器默认的还是不知道我那个文件里面有定义了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
cxf0153
1楼-- · 2019-08-13 21:05
尽量用u8和s8吧。Keil工程里可以指定缺省的char到底有没有符号,如下图:
chars.jpg
aozima
2楼-- · 2019-08-14 02:24
字符是char
8位数据请使用 uint8_t 或 int8_t (stdint.h)

char的默认类型不同的编译器默认不同,且可以由用户配置。
甚至在某16位的DSP芯片上面, char竟然是16位的。
liuchang
3楼-- · 2019-08-14 04:08
C语言标准根本就没有说明char到底应该是signed还是unsigned。

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

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

严谨一点:不管什么时候使用char,或者short,或者int,都应该指明是signed还是unsigned。
12778298
4楼-- · 2019-08-14 07:31
感谢大家回答

一周热门 更多>