C语言数据类型及表示范围

上传人:ni****g 文档编号:509311118 上传时间:2023-05-01 格式:DOC 页数:19 大小:344KB
返回 下载 相关 举报
C语言数据类型及表示范围_第1页
第1页 / 共19页
C语言数据类型及表示范围_第2页
第2页 / 共19页
C语言数据类型及表示范围_第3页
第3页 / 共19页
C语言数据类型及表示范围_第4页
第4页 / 共19页
C语言数据类型及表示范围_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《C语言数据类型及表示范围》由会员分享,可在线阅读,更多相关《C语言数据类型及表示范围(19页珍藏版)》请在金锄头文库上搜索。

1、C语言各种数据类型在系统中占的字节和取值范围基本类型包括字节型(char)、整型(int )和浮点型(float/doubleint ),和长度定义基本类型变量时,可以使用符号属性signed、unsigned (对于char、 属性short、Io ng (对于int、double )对变量的取值区间和精度进行说明。F面列举了 Dev-C+下基本类型所占位数和取值范围:符号属性长度属性基本型所占位数取值范围输入符举例输出符举、%Le %Lgsign ed- char8-2A7 2A7-1%c%c、%d %uun sig ned- char80 2A8-1%c%c、%d %usig nedsh

2、ort int16-2A15 2A15-1%hdun sig nedshort int160 2A16-1%hu、%ho %hxsig ned-int 32-2A31 2A31-1%dun sig ned-int320 2A32-1%u、%o %xsig nedlong int32-2A31 2A31-1%ldun sig nedlong int320 2A32-1%lu、lo、%lxsig nedlong long int64-2A63 2A63-1%I64dun sig nedlong long int| 640 2A64-1%I64u、l64o、%I64x float 32+/- 3.4

3、0282e+038%f、%e %g-2A7 2A7-1%c%c、%d%udouble 64+/-1.79769e+308%lf 、%le、%lg %f、%e %gchar 8long double 96+/- 1.79769e+308 %Lf几点说明:1. 注意!表中的每一行,代表一种基本类型。“”代表可省略。例如:char、signed char、unsigned char 是三种互不相同的类型;int、short、Io ng也是三种互不相同的类型。可以使用C+的函数重载特性进行验证,如void Fun c(char ch) void Fun c(sig ned char ch) void

4、Func(un sig ned char ch) 是三个不同的函数。2. char/sig ned char/u nsig ned char型数据长度为 1 字节;char为有符号型,但与 sig ned char是不同的类型。注意!并不是所有编译器都这样处理,char型数据长度不一定为1字节,char也不一定为有符号型。3. 将char/signed char转换为int时,会对最高符号位1进行扩展,从而造成运算问题。所以,如果要处理的数据中存在字节值大于127的情况,使用unsigned char较为妥当。程序中若涉及位运算,也应该使用unsigned型变量。4. char/signed

5、char/unsigned char输出时,使用格式符 c (按字符方式);或使用%d %u %x/%X %o按整数方式输出;输入时,应使用G若使用整数方式,Dev-C+会给出警告,不建议这样使用。5. int 的长度,是16位还是32位,与编译器字长有关。16位编译器(如TC使用的编译器)下,int为16位;32位编译器(如 VC使用的编译器cl.exe )下,int 为32位。6. 整型数据可以使用 d(有符号10进制)、o(无符号8进制)或x/%X(无符号16进制) 方式输入输出。而格式符 %u表示unsigned,即无符号10进制方式。7. 整型前缀h表示short , l表示long

6、 。输入输出short/unsignedshort时,不建议直接使用int的格式符%d/%u等,要加前缀h。这个习惯性错误,来源于 TC TC下,int的长度和默认符号属性,都与short 一致,于8. 关于 long long 类型的输入输出:lld和llu是 linux 下 gcc/g+ 用于 long long int类型(64 bits)输入输出的格式符。而 l64d和164则是Microsoft VC+ 库里用于输入输出nt64类型的格式说明。Dev-C+使用的编译器是 Mingw32, Mingw32是x86-win32 gcc子项目之一,编译器核心还是linux下的gcc。进行函

7、数参数类型检查的是在编译阶段, gcc编译器对格式字符串进行检查,显然它不认得l64d,所以将给出警unknowncon version type character I in format”。对于 lld和%llu ,gcc 理所当然地接受了。Mingw32在编译期间使用 gcc的规则检查语法,在连接和运行时使用的却是Microsoft库。这个库里的printf 和scanf函数当然不认识linux gcc下%lld和llu,但对l64d 和I64u,它则是乐意接受,并能正常工作的。9. 浮点型数据输入时可使用 f、e/%E或%g/%Gscanf会根据输入数据形式,自动处理。输出时可使用f

8、(普通方式)、e/%E(指数方式)或 g/%G(自动选择)。10. 浮点参数压栈的规则:float(4 字节)类型扩展成double(8 字节)入栈。所以在输入时,需要区分float(%f) 与double(%lf),而在输出时,用 %f即可。printf 函数将按照 double型的规则对压入堆栈的float(已扩展成double)和double型数据进行输出。如果在输出时指定%lf格式符,gcc/mingw32编译器将给出一个警告。11. Dev-C+(gcc/mingw32)可以选择 float 的长度,是否与 double 一致。12. 前缀 L 表示 long ( double )。

9、虽然long double比double长4个字节,但是表示的数值范围却是一样的。long double类型的长度、精度及表示范围与所使用的编译器、操作系统等有关。转:http:/blog.si .c n/s/blog_60ad6bcf0100ehpu.html?retcode=01.整型数据类型C定义了 5种整型数据类型。整型数据类型表序 号类型名称说明字节数取值范围1sig ned char有符号的单字节整数类 型1-128+1272short int短整型2-32768+327673nt整型4-2147438648+21474386474long int长整型4-2147438648+2

10、1474386475long long int长长整型8-9223372036854775808+-92例 输出各种整型类型的字节数#in eludeint mai n(void) prin tf(sizeof(sig ned char) = %d/n, sizeof(sig ned char);printf(sizeof(short int) = %d/n, sizeof(short int); /* sizeof的结果都是 int 型 */prin tf(sizeof( int) = %d/n, sizeof(i nt);prin tf(sizeof( long int) = %d/n,

11、sizeof(l ong in t);printf(sizeof(long long int) = %d/n, sizeof(long long int);return 0;编译和运行结果rootlocalhost ccc# gcc c15.crootlocalhost ccc# ./a.outsizeof(sig ned char) = 1sizeof(short int) = 2sizeof(i nt) = 4sizeof(lo ng int) = 4sizeof(lo ng long int) = 8程序说明:sizeof是字节操作符,使用方式,sizeof (数据类型)。sizeof的

12、作用 是得到数据类型所占的字节数。我们运行程序使用的环境是Redhat 5 Linux,编译器是GCC。2.无符号整数类型对应有符号类型,还有无符号整数类型。无符号整数类型表序号|类型名称|字节数|取值范1un sig ned char102552un sig n short int20655353un sig ned int4042949672954un sig ned long int4042949672955un sig n long long int80184467440737095例 输出各种无符号整数类型的字节数#in eludeint mai n(void) prin tf(si

13、zeof( un sig ned char) = %d/n, sizeof( un sig ned char);printf(sizeof(unsigned short int) = %d/n, sizeof(unsigned short int); /* sizeof的结果都是int型*/prin tf(sizeof( un sig ned int) = %d/n, sizeof( un sig ned in t);printf(sizeof(unsigned long int) = %d/n, sizeof(unsigned long int);printf(sizeof(unsigned

14、 long long int) = %d/n, sizeof(unsigned long long int);return 0;编译和运行结果rootlocalhost ccc# gcc c16.crootlocalhost ccc# ./a.outsizeof( un sig ned char) = 1sizeof( un sig ned short int) = 2sizeof( un sig ned int) = 4sizeof( un sig ned long int) = 4sizeof( un sig ned long long int) = 83.整型常量整型常量是指用以表示整型数值的常量,分为短整型( short int )、整型(int)、 长整型(long int )和长长整型(long long int )四种。C默认整型(int)。各种 类型整型常量

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号