
第2章 数据类型、运算符及表达式
2.1 知识要点
进行C语言程序设计时,首先需掌握一些基础知识,主要包括数据类型、常量、变量、运算符、表达式、scanf语句和printf语句等内容。
2.1.1 数据类型
数据是程序处理的对象。数据类型决定了数据对象的存储形式、取值范围和能进行的运算。在C语言中,数据类型一般包括基本数据类型、构造数据类型、指针类型和空类型4大类。
1. 常量与变量
C语言中数据有常量和变量之分。在程序运行过程中,其值不能改变的量称为常量;其值可以改变的量称为变量。
在基本数据类型中,常量可分为:整型常量、浮点数型常量和字符型常量。变量用于存储数据,一般在使用变量之前,必须先将其声明为某种数据类型的变量。
2. 类型转换
在表达式中,若有不同类型的数据参加运算,需要先进行类型转换。类型转换分为自动转换和强制转换。自动转换的原则是:级别低的数据类型向级别高的类型转换。
2.1.2 运算符与表达式
由运算符和操作数组成的有意义的式子称为表达式。表达式的值和类型取决于参与运算的运算符和运算对象(包括常量、变量、函数等)。表达式按其所含运算符和运算对象的不同,可分为算术表达式、赋值表达式、关系表达式、逻辑表达式和逗号表达式等。
1. 算术运算符
算术运算符可用于各类数值的运算,包括+、−、*、/、%、++、−−等。
2. 赋值运算符与赋值表达式
赋值表达式的一般形式为:变量=表达式;其作用是将右边表达式的值赋给左边的变量。
C语言中,在赋值运算符“=”前加上算术运算符(+、−、*、/、%)可构成复合赋值运算符,例如,+=、−=、*=、/=、%=等。
3. 关系运算符与关系表达式
关系运算符也称为比较运算符,包括>、<、==、>=、<=、!=等6种,均为双目运算符,用于比较两边的表达式是否满足条件,运算结果为1代表真,为0代表假。
4. 逻辑运算符与逻辑运算对象
常用的逻辑运算符有3种:与(&&)、或(||)、非(!)。逻辑运算对象可以是关系表达式或逻辑量,用整数1代表真,0代表假。
5. 条件表达式
条件表达式的一般形式为:表达式1?表达式2:表达式3。
其运算过程是:先计算表达式1的值,如果它的值非0(真),则将表达式2的值作为条件表达式的值;否则,将表达式3的值作为条件表达式的值。
6. 逗号表达式
逗号表达式的一般形式为:表达式1,表达式2,…,表达式n。
逗号表达式的值为表达式n的值。
7. 运算符的优先级和结合性
C语言的运算符具有优先级。当多种运算符混合运算时,优先级关系为:首先是算术运算符,其次是关系运算符,最后是逻辑运算符。
2.1.3 数据输入与输出
在C语言中,数据的输入、输出是通过调用函数来实现的。调用输入/输出函数时,需在源程序开始位置,首先引用编译预处理命令#include<stdio.h>。
1. 格式化输出函数printf( )
printf()函数可向终端设备输出各种格式化的数据。函数调用格式为:
printf("格式控制字符串" ,输出列表);
“格式控制字符串”表示输出的格式,由格式控制说明和普通字符组成。“输出列表”列出要输出的数据(包括常量、变量或表达式),各输出项之间用逗号分隔,且它们的类型、个数和位置必须与“格式控制字符串”中的格式控制说明一一对应。
2. 格式化输入函数scanf( )
scanf()函数用于按规定的格式从键盘输入数据,并将数据存入对应的地址单元中。函数调用格式为:
scanf("格式控制字符串" ,输入参数);
“格式控制字符串”的含义与printf()函数相同。输入参数以地址的形式出现,即是需要接受输入数据的变量的地址(变量名前加&)或字符串的首地址,而不是变量本身。
3. 字符数据的输入与输出
C语言提供了putchar()和getchar()函数,用于单个字符的输入和输出。