unsigned赋值负数输出情况printf输出格式%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 字符串printf怎么加endl
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。