首页 > 其他分享 >c unsigned与signed转换问题

c unsigned与signed转换问题

时间:2023-02-13 20:37:57浏览次数:37  
标签:11111111 转换 符号 int unsigned signed 负数 4294967295


unsigned int a = 4294967295;
printf("%d\n", a); //=> -1

a 是无符号int最大值表示为​​11111111 11111111 11111111 11111111​​​ 转换成有符号输出 首位1看作是负数 负数输出需要反补码 再取反码
变为 ​​10000000 00000000 00000000 00000001​​ 就是 -1 了

同样 signed转换 unsigned也是如此

int a = -1;
printf("%u \n", a); //4294967295

\u即转换成 无符号输出 就不看首位是1或者0了决定正数还是负数 都按照正数计算
-1在内存中表示为 ​​​11111111111111111111111111111111​​​ 无符号直接计算 结果就是​​4294967295​


标签:11111111,转换,符号,int,unsigned,signed,负数,4294967295
From: https://blog.51cto.com/u_15964288/6054682

相关文章