溢出和取值范围

C语言的整型溢出问题
整数溢出

  • int、long int 、long long int 占用字节

《C和指针》中写过:long与int:标准只规定long不小于int的长度,int不小于short的长度。

double与int类型的存储机制不同,long int的8个字节全部都是数据位,而double是以尾数,底数,指数的形式表示的,类似科学计数法,因此double比int能表示的数据范围更广。

long long在win32中是确实存在,长度为8个字节;定义为LONG64。
为什么会出现long int呢?在win32现在系统中,长度为4;在历史上,或者其他某些系统中,int长度为2,是short int。
即便是long long,在TI的有款平台中,长度为5也就是说,每种类型长度,需要sizeof才知道,如果可能,最好用union看看里面的数据,可以消除一些类型的假象长度。

类型名称 字节数 取值范围
signed char 1 -128~+127
short int 2 -32768~+32767
int 4 -2147483648~+2147483647
long int 4 -2147483648~+2141483647
long long long int 8 -9223372036854775808~+9223372036854775807

unsigned int (unsigned long)

  • 4字节8位可表达位数:2^32=42 9496 7296

  • 范围:0 ~ 42 9496 7295 (42*10^8)

int (long)

  • 4字节8位可表达位数:2^32=42 9496 7296

  • 范围:-21 4748 3648 ~ 21 4748 3647 (21*10^8)

long long (__int64)

  • 8字节8位可表达位数:2^64=1844 6744 0737 0960 0000

  • 范围:-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807 (922*10^16)

unsigned long (unsigned __int64)

  • 8字节8位可表达位数:2^64=1844 6744 0737 0960 0000

  • 范围:0 ~ 1844 6744 0737 0955 1615 (1844*10^16)

最大值、最小值

在#include存有各个类型的最大值和最小值

表示 类型
CHAR_MIN char的最小值
SCHAR_MAX signed char 最大值
SCHAR_MIN signed char 最小值
UCHAR_MAX unsigned char 最大值
SHRT_MAX short 最大值
SHRT_MIN short 最小值
USHRT_MAX unsigned short 最大值
INT_MAX int 最大值
INT_MIN int 最小值
UINT_MAX unsigned int 最大值
UINT_MIN unsigned int 最小值
LONG_MAX long最大值
LONG_MIN long最小值
ULONG_MAX unsigned long 最大值
FLT_MANT_DIG float 类型的尾数
FLT_DIG float 类型的最少有效数字位数
FLT_MIN_10_EXP 带有全部有效数的float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP float类型的正指数的最大值(以10为底)
FLT_MIN 保留全部精度的float类型正数最小值
FLT_MAX float类型正数最大值

c语言long和long long的取值范围相关推荐

  1. C语言整型——整型的取值范围:(一)无符号整型的取值范围

    文章目录 `limits.h` 的不足 有符号整型的编码 计算方法 需要注意的地方 以 int 传递 short 取模位移 limits.h 的不足 通过库 limits.h 中的常量,我们可以得知绝 ...

  2. c语言long和long long的取值范围,转义字符

    溢出和取值范围 C语言的整型溢出问题 int.long int .long long int 占用字节 <C和指针>中写过:long与int:标准只规定long不小于int的长度,int不 ...

  3. C语言——数据类型、基本数据类型的取值范围

    目录 一.数据类型 1.基本类型 2.sizeof运算符 3.signed和unsigned 二.取值范围 1.比特位 2.字节 3.符号位 4.补码 5.基本数据类型的取值范围 一.数据类型 1.基 ...

  4. c语言 ——int16,c语言中int取值范围为16位指的是什么16位

    匿名用户 1级 2013-10-20 回答 1.c语言中int取值范围为16位指的是什么16位 计算机用二进制表示数值,最小单位就是位(bit),可以储存0或1,16位就是有16个储存0或1的位,其中 ...

  5. C语言中不同类型的取值范围

    C语言中的不同类型的取值范围 前言 C语言中,我们知道最基本的数据类型有int整型,float和double浮点型,char字符型,在计算机里,他们的取值并不是任意和无限的,都有相应的取值范围,那么计 ...

  6. c语言字母的范围,C语言字符-C语言char-C语言字符取值范围-嗨客网

    C语言字符教程 '' 包围. C语言字符定义详解 语法 char varname = value; 参数 参数 描述 char 定义字符类型变量使用的类型. varname 变量名. value 可选 ...

  7. 整型数据类型及其取值范围详解

    整型数据类型 C数据类型 最小值 最大值 [signed] char -128 127 unsigned char 0 255 short -32768 32767 unsigned short 0 ...

  8. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

    文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...

  9. Python语言程序设计之urllib.request抓取页面,网易公开课之《麻省理工学院公开课:算法导论》

    Python语言用urllib.request模块抓取页面非常简单,再将抓取的页面内容用re模块解析,找出自己想要的东西.下面就就此方法来抓取网易公开课之<麻省理工学院公开课:算法导论>, ...

最新文章

  1. 程序员吐槽:在阿里工作带来光环,在京东却带来负面影响!
  2. java把一段英文拆成单词_Java Word Break(单词拆解)
  3. bzoj4830 hnoi2017 抛硬币
  4. python编写程序-30分钟学会用Python编写简单程序
  5. PHP7天前的时间戳
  6. 万网mysql中文乱码_Linux下MySQL出现乱码的解决方法-阿里云开发者社区
  7. P4198 楼房重建 线段树 + 区间合并
  8. C#设计模式之8-组合模式
  9. (转)Android中JNI编程的那些事儿
  10. 力扣-48 旋转图像
  11. DHCP中继原理与配置
  12. 如何在arcmap引用谷歌数据
  13. excel锁定前几行,无法选择和编辑
  14. air应用接入移动mm弱联网平台
  15. dns服务器配置错误无法修复,电脑DNS错误修复的方法教程
  16. Invalid hook call. Hooks can only be called inside of the body of a function
  17. Java File删除文件夹及其子文件
  18. linux 启用dhcp服务器,linux下DHCP服务器配置
  19. 楼宇控制服务器显示FT,【产品介绍】楼宇智控系统
  20. 图像处理中的傅立叶变换

热门文章

  1. 产品面试常见问题和解读(一)
  2. 诺基亚拟1.53亿美元收购软件公司Trolltech
  3. openwrt修改密码
  4. 基于亚博K210的人脸识别
  5. 前端开发从零开始学Lua-开发环境搭建及基础语法介绍(对照JS)
  6. 6大行数字人民币推送子钱包扩大使用范围
  7. 随机产生十六进制的颜色
  8. 中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障------04
  9. 同样是打车,为什么我要比别人多付几块钱?
  10. Arcgis中将字段带入为3dmax模型名称(二)