#include <stdio.h>
int main() {
char a = 0;
unsigned char b = 0;
--a;
--b;
printf("char a = %u \n", a);
printf("Unsigned char is %u", b);
return 0;
}
运行结果:
char a = 4294967295
Unsigned char is 255
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
char 和 unsigned char 在传给 printf 时会自动提升为 int 类型。
因为 char 是带符号数字类型,所以会进行符号拓展。a 从 0xFF 拓展为 0xFFFFFFFF (4294967295)。
unsigned char 则会进行零拓展,b 从 0xFF 拓展为 0x000000FF (255)。