我们这里只讲下基本数据
2. 各种数据类型介绍
2.1 整型
整型常量的分类:基本整型、短整型、常整型、无符号整型(没有负数),表达与范围见表2.表2个表达说明,
如:(signed)char我们可以写成char
()中的文字在实际应用中可以不写,系统会默认表示为(signed)char。
2.1.1 整型常量
整型常量即整常数。在C语言中,整常数可用以下三种形式表示:
(1)十进制整数。
如:123, -456.4。
(2)八进制整数。以数字0开头的数是八进制数。
如:0123表示八进制数123,等于十进制数83
- 011表示八进制数-11, 即十进制数-9。
(3)十六进制整数。以0x或X开头的数是16进制数。
如:0x123,代表16进制数123,等于十进制数 291。
-0x12等于十进制数-18
-0X8000L,16进制长整型,等于十进制数32768
2.1.2 C语言如何表示
1) 若要表示一个长整型常量,则应该在一个整型常量后加一个字母后缀l或L。
如: long i; i=200l;
注意:如果一个足够大的数,即使面值在长整型范围内,但数字后未加字母l,也不可代表长整型。
2) 无论是短整型还是长整型,都被识别为有符号整型,无符号整数应该在数字末尾加上u或U,长整型无符号整数常数,加lu或LU
注意:无符号常量不能表示成小于0的负数。
3)一个整数,如果其值在-32768~+32767范围内,认为它是int型,它可以赋值给int型和long int型变量。
一个整数,如果其值超过了上述范围,而在-2147483637~+2147483647范围内,则认为它是为长整型。可以将它赋值给一个long int型变量。
2.2 实型
实型也称浮点型
2.2.1 实型常量
实型常量只能用十进制形式表示。
1)小数形式:0.123 345.0 -34. .679 0.0
小数点不能省略,不能只有一个小数点
绝对值小于1的实型常量,其小数点前面的零可以省略,如;0.123可写为.123,-0.0123e-5可写为.0123e-5。
2)指数形式:指数部分前加字母e或E
1.2345e3、12.345E2、1.2345e+3
指数部分必须是整数,字母e或E之前必须有数字,字母e或E 前后以及数字之间不得插空格。
在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字.
例如: 123.456可以表示为:123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e
其中的1.23456e3称为“规范化的指数形式”。
2.2.2 单精度浮点数(float)与双精度浮点数(double)的区别如下:
1)在内存中占有的字节数不同
单精度浮点数在机内占4个字节
双精度浮点数在机内占8个字节
2)有效数字位数不同
单精度浮点数有效数字8位
双精度浮点数有效数字16位
3)所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
4)在程序中处理速度不同
一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快.
2.3字符型数据
2.3.1 字符型常量
C语言的字符常量是ASCll码字符集里的一个字符,包括字母(大、小写有区别)、数字和标点符号以及特殊字符等,均为半角字符,一个字符常量在内存中占1个字节,因此字符常量不能是全角字符。C语言字符常量有三种表示方法:
1)普通字符常量:用单引号
'a' 'A' '0' ' ' '+'
单引号内,不能使单撇或反斜杠。单引号内空格也是一个字符常量,但不能写成两个连续的单引号
2)用该字符的ASCll码值表示的字符常量
例如:
十进制数65表示大写字母'A'
十六进制数0X41也表示'A '
八进制数0101表示大写字母' A ' 。
一些不能用符号表示的特殊字符(如控制符等),可以用ASCll码值来表示,如换行可用10表示,也可用十六进制数0x0a或八进制数012来表示
3)转义字符:是以' \ '开头的用单引号括起来的字符序列。
例如:
用 '\r'表示回车
用'\n'表示换行。换行也可用‘\12’或‘\012’换行还可用'\xa'或'\x0a'反斜杠后跟十六进制数表示
'\101' 用八进制表示的字符A
在C语言中,字符常量与整数是互通的。经常将字符常量等价为整数参与运算:
如:'A' +32 结果为 'a' '0' - 48 结果为 0
2.3.3 字符数据在内存中的存储形式及其使用方法
一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的ASCII代码放到存储单元中。这样使字符型数据和整型数据之间可以通用。
注意: 一个字符数据既可以以字符形式输出,也可以以整数形式输出。
2.4 字符串
2.4.1 字符串常量表示形式:用双引号括起来的字符序列。
如:"How do you do.", "CHINA", "a" , "$123.45" , "%d\n" ," "
注意:两个连续的双引号也是字符串常量,称为空串,占一个字节存放'\0'
字符串的存储形式:存储时每个字符串末尾自动加一个 '\0'作为字符串结束标志。
如:如果有一个字符串常量"CHINA" ,实际上在内存中是:
它占内存单元不是5个字符,而是6个字符,最后一个字符为'\0' 。但在输出时不输出'\0' 。
2.4.2 字符和字符串的区别
字符类型只有一个字节,就是只能储存一个字符,单个字母或者数字,例如a或者1,字符类型的赋值应该用' '号。例如 char a='a';就是将字母a赋给变量a。
字符串可以储存多个字符,例如储存一句"I am fine"等。字符串的赋值要用" ";string a="I am fine!"就是将I am fine!这个字符串赋给字符串变量。值得注意的是字符串变量会在最后加多一个结束标志'\0'。
例如char a='a',占一个字节,而string a="a"则占两个字节,因为除了储存字母a外还要储存'\0'这标志。所以char a="a"这个语句是不对的,因为变量a只占一个字节,而"a"则占两个字节,所以上述赋值表达式是非法的。