%d 有符号10进制整数
%ld 长整型
%hd短整型
%i 有符号10进制整数
%o 无符号8进制整数
%u 无符号10进制整数
%x 无符号的16进制数字,并以小写abcdef表示
%X 无符号的16进制数字,并以大写ABCDEF表示
%F/f 浮点数 %E/e 用科学表示格式的浮点数
%g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数
%c 单个字符
%s 字符串
unsigned int a = -1;
unsigned short b = -1;
unsigned char c = -1;
printf("%u, %d, %d,\n",a,b,c);
输出:4294967295, 65535, 255,
unsigned int a = -1;
unsigned short b = -1;
unsigned char c = -1;
printf("%d, %d, %d,\n",a,b,c);
输出:-1, 65535, 255,
a定义为unsigned 输出应该和上面的一样为4294967295啊
因为%d是按int输出,所以后面两个数的存储仍然是按照所存储二进制输出,没有涉及到int最高位的符号位
/*
us的二进制表示是0xffff,以4个字节的int类型输出时表示的是0x0000ffff,所以输出65535
un的二进制表示是0xffffffff,以4个字节的int类型输出时表示的是-1,所以输出-1
*/
unsigned int a = -1;
unsigned short b = -1;
unsigned char c = -1;
printf("%d, %hd, %d,\n",a,b,c);
输出:-1, -1, 255,
啊,各种地方都需要注意啊
如果使用cout来输出:
cout<< a<<endl;
cout<< b<<endl;
cout<< c<<endl;
输出:4294967295, 65535,
c我如果为-1没有输出,如果是0-255之间为对应的ascii码
cout<<us<<endl; // -1在无符号的short数据中是65535
cout<<un<<endl; // -1在无符号的int数据中是4294967295