C语言各种数据类型在系统中占的字节和取值范围_第1页
C语言各种数据类型在系统中占的字节和取值范围_第2页
C语言各种数据类型在系统中占的字节和取值范围_第3页
C语言各种数据类型在系统中占的字节和取值范围_第4页
C语言各种数据类型在系统中占的字节和取值范围_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C C 语言各种数据类型在系统中占的字节和取值范围语言各种数据类型在系统中占的字节和取值范围 2011 12 282011 12 28 19 3419 34 基本类型包括字节型 基本类型包括字节型 charchar 整型 整型 intint 和浮点型 和浮点型 float doublefloat double 定义基本类型变量时 可以使用符号属性定义基本类型变量时 可以使用符号属性 signedsigned unsignedunsigned 对于 对于 charchar intint 和长度属性和长度属性 shortshort longlong 对于 对于 intint doubledouble 对变量的取值区间和精度进行说明 对变量的取值区间和精度进行说明 下面列举了下面列举了 Dev C Dev C 下基本类型所占位数和取值范围 下基本类型所占位数和取值范围 符号属性符号属性 长度属性长度属性 基本型基本型 所占位数所占位数 取值范围取值范围 输入符举例输入符举例 输出符举例输出符举例 charchar 8 8 2 7 2 7 1 2 7 2 7 1 c c c c d d u u signedsigned charchar 8 8 2 7 2 7 1 2 7 2 7 1 c c c c d d u u unsignedunsigned charchar 8 8 0 2 8 10 2 8 1 c c c c d d u u signed signed shortshort int int 1616 2 15 2 15 2 15 12 15 1 hd hd unsignedunsigned shortshort int int 1616 0 2 16 10 2 16 1 hu hu ho ho hx hx signed signed intint 3232 2 31 2 31 2 31 12 31 1 d d unsignedunsigned int int 3232 0 0 2 32 12 32 1 u u o o x x signed signed longlong int int 3232 2 31 2 31 2 31 12 31 1 ld ld unsignedunsigned longlong int int 3232 0 2 32 10 2 32 1 lu lu lo lo lx lx signed signed longlong long int long int 6464 2 63 2 63 2 63 12 63 1 I64d I64d unsignedunsigned longlong long int long int 6464 0 2 64 10 2 64 1 2 64 1 2 64 1 I64u I64u I64o I64o I64x I64x floatfloat 3232 3 40282e 0383 40282e 038 f f e e g g doubledouble 6464 1 79769e 308 1 79769e 308 lf lf le le lg lg f f e e g g longlong doubledouble 9696 1 79769e 308 1 79769e 308 Lf Lf Le Le Lg Lg 几点说明 几点说明 1 1 注意注意 表中的每一行 代表一种基本类型 表中的每一行 代表一种基本类型 代表可省略 代表可省略 例如 例如 charchar signedsigned charchar unsignedunsigned charchar 是三种互不相同的类型 是三种互不相同的类型 intint shortshort longlong 也是三种互不相同的类型 可以使用也是三种互不相同的类型 可以使用 C C 的函数重载特性进行的函数重载特性进行 验证 如验证 如 voidvoid Func charFunc char ch ch voidvoid Func signedFunc signed charchar ch ch voidvoid Func unsignedFunc unsigned charchar ch ch 是三个不同的函数 是三个不同的函数 2 2 char signedchar signed char unsignedchar unsigned charchar 型数据长度为型数据长度为 1 1 字节 字节 charchar 为有符号型 但与为有符号型 但与 signedsigned charchar 是不同的类型 是不同的类型 注意注意 并不是所有编译器都这样处理 并不是所有编译器都这样处理 charchar 型数据长度不一定为型数据长度不一定为 1 1 字节 字节 charchar 也也 不一定为有符号型 不一定为有符号型 3 3 将将 char signedchar signed charchar 转换为转换为 intint 时 会对最高符号位时 会对最高符号位 1 1 进行扩展 从而造成运算进行扩展 从而造成运算 问题 问题 所以所以 如果要处理的数据中存在字节值大于如果要处理的数据中存在字节值大于 127127 的情况 使用的情况 使用 unsignedunsigned charchar 较较 为妥当 程序中若涉及位运算 也应该使用为妥当 程序中若涉及位运算 也应该使用 unsignedunsigned 型变量 型变量 4 4 char signedchar signed char unsignedchar unsigned charchar 输出时 使用格式符输出时 使用格式符 c c 按字符方式 或使 按字符方式 或使 用用 d d u u x X x X o o 按整数方式输出 输入时 应使用 按整数方式输出 输入时 应使用 c c 若使用整数 若使用整数 方式 方式 Dev C Dev C 会给出警告 不建议这样使用 会给出警告 不建议这样使用 5 5 intint 的长度 是的长度 是 1616 位还是位还是 3232 位 与编译器字长有关 位 与编译器字长有关 1616 位编译器 如位编译器 如 TCTC 使用的编译器 下 使用的编译器 下 intint 为为 1616 位 位 3232 位编译器 如位编译器 如 VCVC 使使 用的编译器用的编译器 cl execl exe 下 下 intint 为为 3232 位 位 6 6 整型数据可以使用整型数据可以使用 d d 有符号 有符号 1010 进制 进制 o o 无符号 无符号 8 8 进制 或进制 或 x Xx X 无符号 无符号 1616 进制 方式输入输出 而格式符进制 方式输入输出 而格式符 u u 表示 表示 unsignedunsigned 即无符 即无符 号号 1010 进制方式 进制方式 7 7 整型前缀整型前缀 h h 表示表示 shortshort l l 表示表示 longlong 输入输出输入输出 short unsignedshort unsigned shortshort 时 不建议直接使用时 不建议直接使用 intint 的格式符的格式符 d u d u 等 要等 要 加前缀加前缀 h h 这个习惯性错误 来源于 这个习惯性错误 来源于 TCTC TCTC 下 下 intint 的长度和默认符号属性 的长度和默认符号属性 都与都与 shortshort 一致 于是就把这两种类型当成是相同的 都用一致 于是就把这两种类型当成是相同的 都用 intint 方式进行输入输方式进行输入输 出 出 8 8 关于关于 longlong longlong 类型的输入输出 类型的输入输出 lld lld 和和 llu llu 是是 linuxlinux 下下 gcc g gcc g 用于用于 longlong longlong intint 类型类型 64 64 bits bits 输入输出的格式符 而输入输出的格式符 而 I64d I64d 和和 I64u I64u 则是则是 MicrosoftMicrosoft VC VC 库里用于输入输出库里用于输入输出 int64 int64 类型的格式说明 类型的格式说明 Dev C Dev C 使用的编译器是使用的编译器是 Mingw32Mingw32 Mingw32Mingw32 是是 x86 win32x86 win32 gccgcc 子项目之一 编译器核心还是子项目之一 编译器核心还是 linuxlinux 下的下的 gccgcc 进行函数参数类型检查的是在编译阶段 进行函数参数类型检查的是在编译阶段 gccgcc 编译器对格式字符串进行检查 编译器对格式字符串进行检查 显然它不认得显然它不认得 I64d I64d 所以将给出警 所以将给出警 unknown unknown conversionconversion typetype charactercharacter I I in in format format 对于 对于 lld lld 和和 llu llu gccgcc 理所当然地接受了 理所当然地接受了 Mingw32Mingw32 在编译期间使用在编译期间使用 gccgcc 的规则检查语法 在连接和运行时使用的却是的规则检查语法 在连接和运行时使用的却是 MicrosoftMicrosoft 库 这个库里的库 这个库里的 printfprintf 和和 scanfscanf 函数当然不认识函数当然不认识 linuxlinux gccgcc 下下 lld lld 和和 llu llu 但对 但对 I64d I64d 和和 I64u I64u 它则是乐意接受 并能正常工作的 它则是乐意接受 并能正常工作的 9 9 浮点型数据输入时可使用浮点型数据输入时可使用 f f e E e E 或或 g G g G scanfscanf 会根据输入数据形式 会根据输入数据形式 自动处理 自动处理 输出时可使用输出时可使用 f f 普通方式 普通方式 e E e E 指数方式 或 指数方式 或 g G g G 自动选择 自动选择 10 10 浮点参数压栈的规则 浮点参数压栈的规则 float 4float 4 字节字节 类型扩展成类型扩展成 double 8double 8 字节字节 入栈 所以在入栈 所以在 输入时 需要区分输入时 需要区分 float f float f 与与 double lf double lf 而在输出时 用 而在输出时 用 f f 即可 即可 printfprintf 函数函数 将按照将按照 doubledouble 型的规则对压入堆栈的型的规则对压入堆栈的 float float 已扩展成已扩展成 double double 和和 doubledouble 型数据进行型数据进行 输出 如果在输出时指定输出 如果在输出时指定 lf lf 格式符 格式符 gcc mingw32gcc mingw32 编译器将给出一个警告 编译器将给出一个警告 11 11 Dev C gcc mingw32 Dev C gcc mingw32 可以选择可以选择 floatfloa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论