C语言数据类型

本文详细介绍了C语言中的整型家族,包括字符型、短整型、整型和长整型,以及它们的有符号和无符号形式,并阐述了各类型的最小范围。此外,还讨论了浮点类型,如float、double和long double的精度和标准范围。最后提到了字符串常量的存储形式和使用注意事项,以及C语言中的求值顺序规则。
摘要由CSDN通过智能技术生成

1. 整型家族

C语言的整型家族包括字符、短整型、整型和长整型。它们都分为有符号(signed)和无符号(unsigned)。

在C语言中长整型至少和整型一样长,而整型至少应该和短整型一样长。

标准并未规定长整型必须比短整型长,只是规定它不得比短整型短。

ANSI C标准加入了一个规范,说明了各种整型的最小允许范围。如下表:

类型最小范围
char0~127
signed char-127~127
unsigned char0~255
short int-32767~32767
unsigned short int0~65535
int-32767~32767
unsigned int0~65535
long int-2147483647~2147483647
unsigned long int0~4294967295

short int至少16位,long int至少32位。至于缺省的int究竟是16位还是32位则是由编译器设计者决定。

头文件limits.h说明了各种不同的整数类型的特点。limits.h同时定义了下列名字:CHAR_ BIT 是字符型的位数(至少8位); CHAR_MINCHAR_MAX定义了缺省字符类型的范围,它们或者应该与SCHAR_MINSCHAR_MAX相同,或者应该与0和UCHAR_MAX相同;最后,MB_LEN_MAX规定了一个多字节字符最多允许的字符数量。

signedsignedunsigned
类型最小值最大值最大值
字符SCHAR MINSCHAR_ MAXUCHAR MAX
短整型SHRT MINSHRT_ MAXUSHRT MAX
整型INT_ MININT MAXUINT_ MAX
长整型LONG MINLONG MAXULONG MAX

尽管设计char类型的目的是为了让它们容纳字符型数值,但字符在本质上是小整型值。

2. 浮点类型

浮点数家族包括float、double 和long double类型。通常,这些类型分别提供单精度、双精度以及在某些支持扩展精度的机器上提供扩展精度。

ANSI 标准仅仅规定long double 至少和double样长,而double至少和float一样长。

标准同时规定了一个最小范围:所有浮点类型至少能够容纳1037~1037之间的任何值。

头文件float.h定义了名字FLT_MAXDBL_MAXLDBL_MAX,分别表示float、double和long double所能存储的最大值。而FLT_MINDBL_MINLDBL_MIN则分别表示float、double 和long double能够存储的最小值。这个文件另外还定义了一些和浮点值的实现有关的某些特性的名字,例如浮点数所使用的基数、不同长度的浮点数的有效数字的位数等。

浮点数字面值总是写成十进制的形式,它必须有一个小数点或一个指数,也可以两者都有。例如:
3.14159
1E10
25.
.5
6.023e23

浮点数字面值在缺省情况下都是double类型的,除非它的后面跟一个L或1来表示它是一个long double类型的值,或者跟一个F或f来表示它是一个float类型的值。

3. 字符串常量

字符串就是一串以NUL字节结尾的零个或多个字符。字符串通常存储在字符数组中。

即使是空字符串,也依然存在作为终止符的NUL字节

在字符串常量的存储形式中,所有的字符和NUL终止符都存储于内存中某个位置。

ANSI C声明,如果对一个字符串常量进行修改,其效果是未定义的。

在程序的使用中字符串常量会生成一个"指向字符的常量指针"。当一个字符串常量出现于一个表达式中时,表达式所使用的值就是这些字符所存储的地址。

不要把字符串常量赋值给一个字符数组,因为字符串常量的直接值是一个指针,而不是这些字符本身。

4. 求值顺序

C语言中只有4个运算符(&&||?:,)存在规定的求值顺序。

分割函数参数的逗号并非逗号操作符的逗号。例如,x和y在函数f(x,y)中的求值顺序是未定义的,而在函数g((x,y))中却是确定的先x后y的顺序进行求值。在g((x,y))中,函数g只有一个参数,即先对x进行求值,然后丢弃x的值,接着求y的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值