#include<stdio.h>
int main()
{
unsigned char a = -1; //a: 1111 1111 ->%d输出(32位)->无符号类型填充0 -> 0000 0000 ....1111 1111 ->255
char b = -1; //b: 1111 1111 ->%d输出(32位)->有符号类型填充符号位 ->1111 1111 ....1111 1111 ->%d带符号输出 ->-1
//b: 1111 1111 ->%u输出(32位)->有符号类型填充符号位 ->1111 1111 ....1111 1111 ->%u不带符号输出 ->4294967295
unsigned int c = -1; //c: 1111 1111 1111 1111 ....(32个1)
unsigned int d = b; //d: b->32位寄存器(b是有符号位,高位补符号位,1111 1111 1111 ...(32个1))->d
unsigned int e = a; //e: e->32位寄存器(a是无符号位,高位补0,0000 0000 .... 0000 1111 1111 )->e
printf("a = %d b = %d c = %d d = %d e = %d\n",a,b,c,d,e);
printf("a = %u b = %u c = %u d = %u e = %u\n",a,b,c,d,e);
return 0;
}
/*
运算结果:
a = 255 b = -1 c = -1 d = -1 e = 255
a = 255 b = 4294967295 c = 4294967295 d = 4294967295 e = 255
*/
/*输出数据常用类型汇总:
%hd、%d、%ld 以十进制、有符号的形式输出 short、int、long 类型的整数。
%hu、%u、%lu 以十进制、无符号的形式输出 short、int、long 类型的整数
%o 以八进制,无符号的形式输出int类型整数。
%x 以十六进制,无符号的形式输出整数。
%c 输出字符。
%lf 以普通方式输出double。
%e 以科学计数法输出double。
%s 输出字符串。*/