printf()里的自动转换规则是怎么的

C语言 码拜 8年前 (2017-04-30) 1321次浏览
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

10

%u是unsigned int类型的,printf以%u输出,相似unsigned int a = (unsigned int )v; printf(“%u”, a);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明printf()里的自动转换规则是怎么的
喜欢 (0)
[1034331897@qq.com]
分享 (0)