char v=-1; unsigned char uv=(unsigned)v; printf("v=%d, uv=%u\n",v,uv); char x=-1; printf("x=%d=%u\n", x, x);
结果是
v=-1, uv=255
x=-1=4294967295
为什么x第二个等号后面不是255呢?
解决方案
10
unsigned char uv=(unsigned)v; // uv = 255,数据截断
%u 是指输出无符号int类型, -1 转换为无符号int类型 = 4294967295
%u 是指输出无符号int类型, -1 转换为无符号int类型 = 4294967295
10