/**
* 整数的溢出
*/
#include <stdio.h> int main(int argc, char *argv[]) {
short i = -24;
// 将-24以无符号int类型输出,实际输出的是
// 其补码转换成的十进制数
printf("将 %d 以无符号整型输出为 %u\n", i, i); // 将 -24 以无符号整型输出为 4294967272
printf("将 %d 以十六进制(小写x)输出为 %x\n", i, i); // 将 -24 以十六进制(小写x)输出为 ffffffe8
printf("将 %d 以十六进制(大写X)输出为 %X\n", i, i); // 将 -24 以十六进制(大写X)输出为 FFFFFFE8
printf("将 %d 以八进制输出为 %o\n", i, i); // 将 -24 以八进制输出为 37777777750 printf("short类型占 %d 个字节\n", sizeof(short)); // short类型占 2 个字节
// long
// 在32位系统下unix系统占4个字节
// 在64位系统下unix系统占8个字节
// 不是很固定,在程序中尽量少用long
printf("long类型占 %d 个字节\n", sizeof(long)); // long类型占 8 个字节
// long long
// 占8个字节,64位,是固定的,对于32位系统,cpu的寄存器
// 是32位,所以计算long long的类型的数据,效率会很低
printf("long long类型占 %d 个字节\n", sizeof(long long)); // long long类型占 8 个字节
printf("unsigned int类型占 %d 个字节\n", sizeof(unsigned int)); // unsigned int类型占 4 个字节
printf("unsigned short类型占 %d 个字节\n", sizeof(unsigned short)); // unsigned short类型占 2 个字节
printf("unsigned long类型占 %d 个字节\n", sizeof(unsigned long)); // unsigned long类型占 8 个字节
printf("unsigned long long类型占 %d 个字节\n", sizeof(unsigned long long)); // unsigned long long类型占 8 个字节 // 整数溢出
// 计算一个整数的时候超过整数能够容纳的最大单位后
// 整数会溢出,溢出的结果是高位被舍弃
unsigned short abc = 0xffff;
abc = abc + 1;
printf("abc = %d\n", abc); // abc = 0
unsigned short n1 = 0xffff;
// n1 += 100 <=> n1 + 1 + 99
n1 += 100;
printf("n1 = %d\n", n1); // n1 = 99
unsigned short n2 = 2;
n2 -= 5;
// 输出的是-3对应的补码的整数值
printf("n2 = %d\n", n2); // n2 = 65533
int n3 = 0x12345678;
// n3为int型占4个字节32位,n2为unsigned short型占2个字节16位
// 将n3赋给n2,将大整型赋给小整型,多出的部分会被截取丢弃掉
n2 = n3;
printf("n2 = %x\n", n2); //n2 = 5678
short n4 = -2;
// 当一个小的整数赋值给一个大的整数时,符号位不会丢失
// 若为正则补0,为负补1
// n3不足的位会自动补1,因为n4为负值,符号位为1
n3 = n4;
printf("n3 = %x\n", n3); // n3 = fffffffe
unsigned short n5 = 0;
// n5为无符号整型,最小值为0,再减一,值为-1
// 最后会输出-1补码 1111 1111 1111 1111
n5 -= 1;
printf("n5 = %x\n", n5); // n5 = ffff return 0;
}

最新文章

  1. [实践] Android5.1.1源码 - 在Framework中添加自定义系统服务
  2. WCF (413) Request Entity Too Large
  3. Android 图片上传
  4. css3之多列
  5. javaweb学习总结(十五)——JSP基础语法
  6. python中的metaclass
  7. shell 常用命令
  8. 说反话(c++实现)
  9. 最长公共子序列 NYOJ37
  10. JQuery+EasyUI弹窗代码
  11. Notepad++ 经常使用快捷键 (MEMO)
  12. jQuery之stop()
  13. DSAPI 调用串口选择界面
  14. 使用Atlas进行元数据管理之Glossary(术语)
  15. 阿里云HBase全新发布X-Pack 赋能轻量级大数据平台
  16. llinux挂载多个光驱
  17. IntelliJ IDEA 破解Jrebel6.3.0安装
  18. https在电子邮件安全解决方案
  19. Mysql备份工具xtraback全量和增量测试
  20. gdb调试器学习链接

热门文章

  1. 2018-2-13-Win10-UWP-Intro-to-controls-and-events
  2. MySQL--11 备份的原因
  3. Elastic Search快速入门
  4. reids 持久化
  5. Tab选项卡点击 滑动效果js实现
  6. 什么是网站TDK?
  7. python基础:6.python最大的递归层数
  8. Spring----组合注解与元注解
  9. 向指定URL 发送POST请求的方法
  10. Ubuntu 16.04配置vncviewer