纵向箭头表示当运算对象为不同数据类型时的转换方向,由低级别的类型向高级别的类型转换。强制类型转换示例。......
2023-11-20
数据类型是数据的基本属性,描述数据的存储格式和运算规则。不同类型的数据在内存中所占存储空间的大小是不同的,能够支持的运算和相应的运算规则也不同。
在C语言中,数据类型可分为4类,它们是基本数据类型、构造数据类型、指针类型、空类型,如图2.2所示。
图2.2 C语言的数据类型
不同数据类型的存储空间大小和取值范围都不同,与使用的编译器版本也有一定的关系,见表2.2。
表2.2 C语言的标准数据类型
1.整型数据
整型数据分为两大类:有符号型和无符号型。有符号的整数既可以是正数,也可以是负数。不带符号位(只包含0和正数)的整数为无符号整数。
在C语言中整型数据用机器的一个字长来存储,所以整型数据的表示范围与计算机系统的软硬件环境有关。在字长为16位的计算机系统中,整型数据占用2个字节,在字长为32位的计算机系统中,整型数据占用4个字节。同样一个整型数据,在取值范围能满足要求的情况下,应尽量使用较短的数据类型。
在C语言中,整型常量可以用以下形式表示:
·八进制整数:以0作为前缀,其数码为0~7,如016、-052等。
·十六进制整数:以0x或0X为前缀,其数码为0~9,A~F或a~f,如0x5d、0X4af等。
若要表示一个长整型常量,则应在数字后面加上后缀“l”或“L”表示,如136L。而无符号数则应在数字末尾加后缀“u”或“U”表示。例如:0xE5LU表示十六进制无符号长整数E5。
在C程序中,用于存放整型数据的变量称为整型变量。整型变量有短整型、基本整型、长整型和无符号整型四种,其数据类型名分别由关键字short int(或short)、int、long int(或long)与unsigned int(或unsigned)表示。例如:
变量定义时可以进行初始化,即在定义变量的同时通过赋值号(=)给变量赋值,例如:int a=10,b=24;等。
【例2.3】 整型数据在程序中的使用示例。
上面程序中的格式输入函数scanf和格式化输出函数printf的使用将在稍后章节中讨论,目前仅需知道可以通过这种方式输入输出数据即可。程序一次运行的情况如下所示:
请输入整型变量b的值:68
a=45,b=68,c=196
请输入长整型变量x和y的值:7895678,2346485
7895678-2346485=5549193
2.实型数据
C语言中,实型常量也称为实型常数、实数或者浮点数。在计算机内存中,实数一律以指数形式存放。C语言中,有十进制小数形式和指数形式两种表示实型常量的方法。
(1)十进制小数形式
小数形式即为在数学中常用的实数形式,它是由数字和小数点组成的,且必须要包含小数点,其书写的一般形式为:
整数部分.小数部分
例如:0.3、25.0、5.0等均为合法的实数。
(2)指数形式
类似于数学中的指数形式,在C语言中,是以e或E后跟一个整数来表示以10为底的幂数,其书写的一般形式为:
整数部分.小数部分E/e阶码部分(整数)
例如:2.1E5表示数据2.1*105,3.7E-2表示3.7*10-2。
在使用指数书写形式时应该注意两点:
①字母“e”或“E”后面的指数部分必须是整数,如100E4.5是错误的表示方法。
②字母“e”或“E”之前必须有数字,即使是1也不能省略,如10-5不能只写为E-5,而应该写成1E-5(或者1e-5)。
C程序中,用于存放实型数据的变量称为实型变量,根据所表示的数据范围和精度不同,实型变量分为单精度型和双精度型,分别用float和double进行定义。
在32位开发环境中,单精度型占4个字节存储空间,其数值范围为3.4E-38~3.4E+38,只能提供6~7位有效数字。双精度型占8个字节存储空间,其数值范围为1.7E-308~1.7E+308,可提供15~16位有效数字。
float x,y; //定义单精度实型变量x和y
double a,b,c;//定义双精度实型变量a、b和c
【例2.4】 实型数据在程序中的使用示例。(www.chuimin.cn)
上面程序运行时,若分别为变量b和y输入值20.6,则输出结果如下所示:
3.字符型数据
字符型数据包括字符常量和字符变量。字符常量是由一对单引号括起来的单个字符,如'C','9'等均为字符常量。这里单引号只起定界作用,不代表字符。在C语言中,一个字符占用一个字节的存储空间,用对应的ASCII值(整数)来存储字符。
转义字符是一种特殊的字符常量,转义字符是由反斜杠'\'开头的字符序列,此时字符具有特定的含义,一般表示控制功能,或者用于表示不能直接从键盘上输入的字符数据,例如,'\n'表示换行,将屏幕上的光标移动到下一行的开头,'\a'产生响铃信号,使计算机通过声卡或扬声器输出一个短的蜂鸣声。表2.3中列出了常用的转义字符。
表2.3 常用转义字符表
使用转义字符表中的最后两种形式可以表示ASCII表中的任何一个字符,例如,'\101'或'\x41'分别用八进制数形式和十六进制数形式表示了字符A。
在C语言中,字符是按它所对应的ASCII码值来存储的,例如,字符'a'存储到计算机内的是ASCII码97,所以字符常量可以像整数一样参与运算。例如:
ch='a'-18 //ch的值为97-18=79
字符类型变量用以存储和表示一个字符,在内存中分配一个字节的空间,字符型变量的定义形式如下:
char<变量列表>;
例如:char ch,c;//定义变量ch、c为字符型变量
【例2.5】 字符数据使用示例。
程序运行的结果如下所示:
A,B,a
从程序的输出结果中可知,一个字符变量加上一个整数即可以得到另外一个字符,例如c1+1即得到字符B。如果一个字符变量的值为大写英文字母,则将其加32后即得到对应的小写字母。当希望通过小写英文字母得到对应的大写字母时,仅需将其减32即可。
程序运行时,若为变量c1提供的值为字符k,则输出结果如图2.12所示。
4.字符串常量
在C语言中,字符串常量是用一对双引号括起来的字符序列,如"CHINA"。其中,双引号只是作为定界符使用,并不是字符串中的字符。系统在存储字符串常量时分配一段连续的存储单元,依次存放字符串中的每一个字符,然后在字符串的最后一个字符后添加转义字符'\0'表示字符串的结尾,所以其需要的空间长度是串中字符存储所需要的长度再加一个字节。
字符串常量中可以包含转义字符,在统计字符串中的字符个数时需要特别注意。例如,"ABCD\t123\n\\\101"是一个合法的字符串常量,其长度为11个字符。字符串常量中字符的大小写是有区别的。例如,"ABCDEFG"与"abcdefg"是两个不同的字符串常量。
由于字符串常量可以是0个字符,所以一对双引号之间没有任何字符也是合法的字符串(空字符串);但在一对单引号中如果没有任何字符则是非法字符。
C语言中没有字符串变量,处理字符串问题时需要使用字符数组或指针,相关内容将在后续章节中讲述。特别值得注意的是,由于一个汉字需要占用两个字节的空间,C程序中即使对于单个汉字的处理,也需要使用字符串的方式进行。
5.符号常量
C程序中,可以用标识符来表示一个常量,称为符号常量。符号常量在使用之前必须先用预处理语句定义,其一般形式为:
#define 标识符 常量
其中:#define是一条预处理命令,称为宏定义命令,其功能是把该标识符定义为其后的常量值。定义符号常量时,习惯使用大写字母构成标识符名,以区别于一般的变量。程序处理时,首先用对应的常量替换标识符,然后再进行编译处理。
在C程序设计中使用符号常量的好处是:
·能清晰地描述某些常量的意义。
·便于修改程序。当需要修改多处使用的某一个常量数据时,能“一改全改”。
【例2.6】 符号常量的定义和使用示例。
有关C语言程序设计基础(第3版)的文章
二进制文件的特点是存储效率较高,但不便于程序中直观地进行数据处理。非缓冲文件系统指的是不由系统开辟文件缓冲区,而是由程序员为用到的每个文件设置数据缓冲区,并自行对文件缓冲区进行管理。C语言中,用一个系统已经构造好的文件类型变量来保存这些信息。......
2023-11-20
在程序设计中使用枚举类型的主要意义在于限制数据的取值范围,使得应用程序尽可能避免出现一些毫无意义的结果。同时,使用枚举型数据还可以在一定程度上描述数据对象的物理含义,使得程序更加清晰、更容易理解,下面的程序演示了枚举数据类型的一些应用。某部门每天需要安排两名技术人员值班,该部门有5位技术人员:程利华、李小明、王琳、高小杰、潘俊民,请编写程序为他们安排1~5天的轮流值班表。......
2023-11-20
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
C语言把括号、赋值、强制类型转换等都作为运算符处理,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算,功能强大。另外,C语言还把括号、下标、强制类型转换、取地址等都作为运算符处理,并通过与算数运算符的组合达到不同的目的,从而使程序更加简洁明了。C语言具有超强的可移植性。总之,C语言在运算符方面是比较容易让人混淆的。......
2023-11-18
针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
C语言的最大特点是:功能强、使用方便灵活。由于这个“灵活”给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。在C语言中大写字母和小写字母是两个不同的字符。C语言规定以’\0’作字符串结束标志,它是由系统自动加上的。当一个语句中使用多层括弧时常出现这类错误。main()C语言中对数组的定义或引用数组元素时必须用方括弧。......
2023-11-18
这三种整型数据类型都可以指定为“有符号”或“无符号”,如果既不指定为signed,也不指定为unsigned,则默认为signed。归纳起来,整型数据分为以下6种,如表2.1所示。表2.1整型数据类型表2.1中“类型”列中的方括号部分是可以省略的,如signed short int与short等价。例如:int a,b,c,d;unsigned e;long f,g;在程序中,一个int型变量最大允许值为32767,要防止数据的溢出。......
2023-11-18
相关推荐