#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
#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
#include <stdio.h>
#include <stdlib.h>
int main() {
char a = 0;
unsigned char b = 0;
--a;
--b;
//类型转换 %u 应该是按4字节整数输出 printf应该有隐式类型转换
int i = a;
printf("char a = %u \n", i);
printf("Unsigned char is %u", b);
system("pause");
return 0;
}
1.1k 阅读
173 阅读
char 和 unsigned char 在传给 printf 时会自动提升为 int 类型。
因为 char 是带符号数字类型,所以会进行符号拓展。a 从 0xFF 拓展为 0xFFFFFFFF (4294967295)。
unsigned char 则会进行零拓展,b 从 0xFF 拓展为 0x000000FF (255)。