一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别:
16位平台
char           1个字节8位
short          2个字节16位
int              2个字节16位
long            4个字节32位
指针            2个字节

32位平台
char           1个字节8位
short          2个字节16位
int              4个字节32位
long           4个字节
long long   8个字节
指针           4个字节

64位平台
char           1个字节
short          2个字节
int              4个字节
long           8个字节(区别)
long long   8个字节
指针          8个字节(区别)

为了保证平台的通用性,程序中尽量不要使用long数据库型。可以使用固定大小的数据类型宏定义

使用int时也可以使用intptr_t来保证平台的通用性,它在不同的平台上编译时长度不同,但都是标准的平台长度,比如64位机器它的长度就是8字节,32位机器它的长度是4字节,定义如下:

#if __WORDSIZE == 64
typedef long int                intptr_t;
#else
typedef int                       intptr_t;
#endif

以上类型定义都有相应的无符号类型。

编程中要尽量使用sizeof来计算数据类型的大小

size_t :  unsigned signed size of computer word size。
ssize_t: sign size_t
它们也是表示计算机的字长,在32位机器上是int型,在64位机器上long型,从某种意义上来说它们等同于intptr_t和 uintptr_t。它们在stddef.h里面定义。

在 stdint.h 中:

/* There is some amount of overlap with <sys/types.h> as known by inet code */
#ifndef __int8_t_defined
# define __int8_t_defined
typedef signed char        int8_t;
typedef short int          int16_t;
typedef int                int32_t;
# if __WORDSIZE == 64
typedef long int           int64_t;
# else
__extension__
typedef long long int      int64_t;
# endif
#endif/* Unsigned.  */
typedef unsigned char        uint8_t;
typedef unsigned short int    uint16_t;
#ifndef __uint32_t_defined
typedef unsigned int        uint32_t;
# define __uint32_t_defined
#endif
#if __WORDSIZE == 64
typedef unsigned long int    uint64_t;
#else
__extension__
typedef unsigned long long int    uint64_t;
#endif

还有这些类型的最大值:

/* Minimum of signed integral types.  */
# define INT8_MIN        (-128)
# define INT16_MIN        (-32767-1)
# define INT32_MIN        (-2147483647-1)
# define INT64_MIN        (-__INT64_C(9223372036854775807)-1)
/* Maximum of signed integral types.  */
# define INT8_MAX        (127)
# define INT16_MAX        (32767)
# define INT32_MAX        (2147483647)
# define INT64_MAX        (__INT64_C(9223372036854775807))/* Maximum of unsigned integral types.  */
# define UINT8_MAX        (255)
# define UINT16_MAX        (65535)
# define UINT32_MAX        (4294967295U)
# define UINT64_MAX        (__UINT64_C(18446744073709551615))

转自:https://www.cnblogs.com/zijianlu/archive/2013/06/05/3118638.html

int8_t int16_t int32_t等数据类型的定义相关推荐

  1. int8_t / int16_t / int32_t /int64_t 是什么数据类型

    这些数据类型是 C99 中定义的 #ifndef __int8_t_defined # define __int8_t_defined typedef signed char int8_t; type ...

  2. c语言 数据结构 list、queue、tree抽象数据类型的定义与实现 详尽代码和注释

    本文使用c语言定义并实现list.queue.tree抽象数据类型,代码有详尽注释,可以通过代码熟悉原理并运用数据结构. 0.ADT基础知识 类型包括两类信息,属性和操作.在编程时,根据编程问题匹配合 ...

  3. TypeScript学习(一):原始数据类型的定义

    这篇博客主要是讲述TS中原始数据类型的定义,有不足之处,还望大家指点(这里就不赘述TS的安装及编译方式了,详情可前往官网查看): Typescript中原始数据类型:布尔类型(boolean).数值类 ...

  4. C语言数据类型的定义

    数据类型的定义 1.数据类型的定义 变量的定义: 数据类型 变量名[标识符] 变量的赋值: 变量名 = 值: 数据类型 变量名[标识符] = 值 标示符的命名规则: 1.字母.数字.下划线 2.不能以 ...

  5. C语言中vu16什么意思,15.stm32 数据类型的定义(常用的U8,U16,U32到底代表什么)

    满意答案 月冰p莹月 2020.09.14 采纳率:48%    等级:12 已帮助:9104人 去百度文库,查看完整内容> 内容来自用户:尘客i 在KeilMDK开发环境里,比如一个无符号32 ...

  6. 51单片机实战教程(一 数据类型别名定义)

    前面已经讲了C语言基础,从此以后将进行编程实战.C数据类型名较长,编程输入不太方便. 下面编写一个定义数据类型别名的程序,并定义实现后面例程常用到的位操作及字符串操作函数. 1. 打开前面教程中创建的 ...

  7. python数据类型怎么定义_Python的五大数据类型的作用、定义方式、使用方法

    一.简述Python的五大数据类型的作用.定义方式.使用方法: 1. 数字类型int: 1.整形 作用:可以表示人的年龄,身份证号码,身高和体重等 定义方式: weight = 130 print(w ...

  8. python数据类型怎么定义_零基础如何学好Python 之int 数字整型类型 定义int()范围大小转换...

    本文主题是讲python数字类型python int整型使用方法及技巧.它是不可变数据类型中的一种,它的一些性质和字符串是一样的,注意是整型不是整形哦. Python int有多种数字类型:整型int ...

  9. C51数据类型扩充定义

    sfr - 特殊功能寄存器的数据声明,声明一个8位的寄存器 sfr16 - 声明一个8位的寄存器 sbit - 特殊位功能位声明,也就是声明某一个特殊功能寄存器中的某一位 bit - 位变量声明,当定 ...

最新文章

  1. 工作中如何使用线程池的?自己如何定义一个线程池?
  2. java中Logger.getLogger(Test.class)
  3. 二、 elasticsearch安装和概念
  4. C++虚函数和纯虚函数的区别
  5. Winform中FormClosing与FormClosed区别与使用
  6. 微信公众号——永久素材的上传
  7. php获得6个月以前的日期,请问下使用PHP如何获取某个月的所有日期
  8. python使用sql读取数据表并返回dataframe
  9. wordpress php 链接,WordPress中获取页面链接和标题的相关PHP函数用法解析
  10. forever不重启 node_利用forever确保nodejs在后台运行,不会down掉
  11. 我的世界起床战争php,我的世界起床战争最新版下载-我的世界起床战争手机版v1.21.5.115731 安卓版 - 极光下载站...
  12. 【2020GAN】对抗生成网络论文收录(1月-6月)
  13. 【年月】-单词学习记录(模板)
  14. seo技巧,seo技巧搜行者SEO
  15. SysML-Sec: A Model-Driven Environment for Developing Secure Embedded Systems
  16. 微博蓝V认证怎么做?(微博企业认证)
  17. 站长如何打造个人品牌
  18. 好用不贵的职场礼物——讯飞智能录音笔SR302
  19. Inventor 二次开发学习指南(入门到精通)
  20. 如何使用Java来发送企业邮箱,并设计收到邮件的样式

热门文章

  1. iOS视频播放横竖屏切换技巧
  2. 微信小程序中处理PDF文件
  3. 卫龙上市,经销商卸磨?
  4. 在应用中使用嵌入式Tomcat
  5. 统计学习_____GMM模型
  6. Python 使用dpkt提取五元组
  7. FreeBSD实现PPPoE自动拨号,DHCP服务器
  8. 云计算技术与应用课后答案第六章
  9. 马里兰大学 计算机专业,美国马里兰大学计算机专业排名好不好?
  10. WINCE_.NET CF 示例集锦