C 数据类型 长度

----数据类型长度

C99标准并不规定具体数据类型的长度大小。计算机具有不同位数的处理器,16,32和更高位的64位处理器,在这些不同的平台上,同一种数据类型具有不同的长度。

char,short,长度相同,分别为1和2个字节。

int 在32和64位处理器上皆为4个字节,在16位上是2个字节。

long在16和32位处理器上皆为4个字节,在64位上是8个字节。

long long 在16和32位处理器上皆为8个字节.

指针类型的位数与各个处理器的位数相同,分别位16,32,64位。

为了便于平台的移植,需要确保数据类型长度的一致,引用stdint.h头文件,利用宏定义固定数据类型的长度。

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;

//unsigned type is the same and omitted here

----uintptr_t,intptr_t

指针类型的长度与处理器的位数相同,需要对指针进行运算时,利用intptr_t类型,引用stddef.h头文件

#if __WORDSIZE == 64
typedef long int                intptr_t;
#else
typedef int                     intptr_t;
#endif
//unsigned type is the same and omitted here

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

----size_t, ssize_t (in stddef.h)

Are the types size_t and uintptr_t equivalent?(http://www.viva64.com/en/k/0024/)

二者数值上相同,同处理器步长。

--in practice you can consider them equivalent and use them as you like.

Usually size_t is used to emphasize we are dealing with a object containing same size,number of elements or iterations;   The type uintptr_t is good for pointers.

时间: 2024-11-06 10:50:59

C 数据类型 长度的相关文章

C语言的基本数据类型长度

PS:以下内容是在Xcode的编辑器64位环境下的测试结果,网上有关于64位和32位各数据类型存在的差异,请自行online search. main.m 1 #import <Foundation/Foundation.h> 2 void basicDataTypeInC() { 3 NSMutableString *mStrInfo = [[NSMutableString alloc] init]; 4 //(数值类型->整型)整型:-2147483648至2147483647 5

--查询数据库中表名 字段 数据类型 长度

SELECT a.name AS TableName, b.name AS ColName, c.name AS ValType, b.length AS ValLength FROM sysobjects a INNER JOIN syscolumns b ON a.id = b.id INNER JOIN systypes c ON c.xtype = b.xtype WHERE a.xtype = 'U' AND c.name != 'sysname' --查询数据库中 表名 字段 数据类

mysql数据类型长度

1个字节= 8位  tinyint 为一个字节  2的8次方= 256 所以最多存储到256 日期和时间数据类型 MySQL数据类型 含义 date 3字节,日期,格式:2014-09-18 time 3字节,时间,格式:08:42:30 datetime 8字节,日期时间,格式:2014-09-18 08:42:30 timestamp 4字节,自动存储记录修改的时间 year 1字节,年份 数值数据类型 整型 MySQL数据类型 含义(有符号) tinyint 1字节,范围(-128~127

数据库中的数据类型长度(理解)

1.在创建数据库的时候int(10),varchar(255)中括号后面的数字代表什么意思? 括号里的数字叫数据的宽度,单数不同的数据类型对宽度的处理也不一样: 1.整数类型,这里显示的宽度和数据类型的取值范围是没有任何关系的,显示宽度只是指明Mysql最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充:如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然可以插入,而且能够显示出来. 例如上面的udi,显示的宽度是4,但是我向uid中插入100001,也是可以的,保存

Atmel Studio 6.0 开发AVR时,各种数据类型的长度

创建项目时,芯片选择ATMEGA16 各种数据类型长度如下 char     8位 short    16位 int        16位 long      32位 long long 64位 有空再测试下double.float的长度

常用数据类型对应字节数,int长度

常用数据类型对应字节数: 这两台机器,前者32位,后者64位,测试了以下数据类型的长度: 前者: int:4,long:4,long long:8 后者: int:4,long:8,long long:8 不是说int会变吗,为何变得是long? 还有如果要写个通用的程序,订死必须用4个或8个字节的数据类型,在不需要重新编码编译的前提下,该如何处理这种变化? 谢谢指教.. 2楼 发表于 2008-4-15 09:35 QUOTE: 原帖由 maxxfire 于 2008-4-15 09:28 发

诳言C言语变量和数据类型

在<二进制思惟以及数据的存储>一节中讲到: 盘算机要处置的数据(诸如数字.文字.符号.图形.音频.视频等)是以二进制的方式寄存在内存中的: 我们将8个比特(Bit)称为一个字节(Byte),并将字节作为最小的可操作单位. 我们无妨先从最复杂的整数说起,看看它是若何放到内存中去的. 变量(Variable) 理想生涯中我们会找一个小箱子来寄存物品,一来显得不那么混乱,二来便利今后找到.盘算机也是这个事理,我们需求先在内存中找一块区域,规则用它来寄存整数,并起一个好记的名字,便利今后查找.这块区域

C语言数据类型

C数据类型 基本类型 数值类型 整型 短整型short 整型int 长整形long 浮点型 单精度型float 双精度型double 字符类型char 构造类型 数组 结构体struct 共用体union 枚举类型enum 指针类型 空类型void 符号属性 长度属性 基本型 位长(字节) 取值范围 输入符 输出符 -- -- char 1 -2^7~2^7-1(或0..255,与体系结构有关) %c %c.%d.%u signed -- char 1 -2^7~2^7-1 %c %c.%d.%

java 获取数组(二维数组)长度实例程序

我们可能知道 js有个length函数,java也有啊length函数 例 如果数组是data[],则data.length 代码如下 复制代码 byte[] phone =new byte[81]; //建立一个byte类型的数组,长度为81 phone[i]!=0中phone[i]! //数组的第i的位置不等0 如: 代码如下 复制代码 byte[] phone =new byte[81]; //建立一个byte类型的数组,长度为81 phone[1]!=0中phone[1]! //数组第二