首页 > 其他 > 详细

越界的转换

时间:2021-06-01 15:36:38      阅读:14      评论:0      收藏:0      [点我收藏+]

short s = 0xFF;
unsigned short u = 0xFF;
printf("s=%d,u=%d\n", s,u);

s = 0x7FFF;
u = 0x7FFF;
printf("s=%d, u=%d\n", s,u);

s = s+1;
u =u+1;
printf("s=%d, u=%d\n", s,u);//-32768 32768

u =-16;
s =-16;
printf("s=%d, u=%d\n", s,u); // u -16+65536 = 65520


u = 65535
s = 65535
printf("s=%d, u=%d\n", s,u); // s 65535 -65536 = -1
u = 0xabcd;
s = 0xabcd;

printf("s=%d, u=%d\n", s,u); //0xabcd - 65536 = -21555

越界的转换 负的加 正的减 最大值
原来的数是负数 加最大值
原来的数是正数 减最大值

 

unsigned int n;
printf "%d", n/10/10/10/10/10/10/10%10

signed int n 越界输出负数
printf "%d", n/10/10/10/10/10/10/10%10

 

BKMGT
1K =1024 b  2^10
1M = 1024K  2^20
1G = 1024 M  2^30 

4G = 2^32
1T = 1024 G
64K = 64*1024 = 65536


2G = 0X80000000//正负分界
4G = 0X100000000

越界的转换

原文:https://www.cnblogs.com/MWDEYI/p/14835746.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!