《数据类型运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《数据类型运算符和表达式.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1高级语言程序设计 南京邮电大学传媒技术学院第第2 2章章 数据类型、数据类型、运算符与表达式运算符与表达式2高级语言程序设计 南京邮电大学传媒技术学院学习目标学习目标n理解常量和变量的概念。理解常量和变量的概念。n熟悉熟悉C语言的基本数据类型:语言的基本数据类型:整型、实型和字符型数据的表示及范围。整型、实型和字符型数据的表示及范围。n掌握掌握C语言的基本运算符及表达式。语言的基本运算符及表达式。3高级语言程序设计 南京邮电大学传媒技术学院2.1 引言引言程序数据结构算法程序数据结构算法 程序程序:编写程序的目的是利用计算机完成编写程序的目的是利用计算机完成 某一问题的求解任务某一问题的求解
2、任务数据:数据:数据是计算机程序在运行时的处数据是计算机程序在运行时的处 理对象理对象算法:算法:对数据的求解操作通过程序步骤,对数据的求解操作通过程序步骤,既算法反映出来既算法反映出来 4高级语言程序设计 南京邮电大学传媒技术学院2.2 C语言的字符集和词法约定语言的字符集和词法约定#include#include#define#define PIPI 3.14 3.14void main()void main()int choice;int choice;float radius,area,perimeter;float radius,area,perimeter;scanf(%d,%f,
3、&choice,&radius);scanf(%d,%f,&choice,&radius);if if(choice=1)/*(choice=1)/*选择选择选择选择1 1,计算面积,计算面积,计算面积,计算面积*/area=PI*radius*radius;area=PI*radius*radius;printf(area=%f,area);printf(area=%f,area);if if(choice=2)/(choice=2)/选择选择选择选择2 2,计算周长,计算周长,计算周长,计算周长 perimeter=2*PI*radius;perimeter=2*PI*radius;pri
4、ntf(perimeter=%f,perimeter);printf(perimeter=%f,perimeter);【例例2-1】一个一个C程序实例,根据用户的选择,程序实例,根据用户的选择,计算以计算以radius为半径的圆的面积或周长。为半径的圆的面积或周长。:5高级语言程序设计 南京邮电大学传媒技术学院2.2.1 C语言的字符集语言的字符集字符是组成语言的最基本元素。字符是组成语言的最基本元素。字符是组成语言的最基本元素。字符是组成语言的最基本元素。C C语言的字符集由字母,数字,空格,标点和特殊字语言的字符集由字母,数字,空格,标点和特殊字语言的字符集由字母,数字,空格,标点和特殊字
5、语言的字符集由字母,数字,空格,标点和特殊字符组成:符组成:符组成:符组成:1.1.字母:字母:字母:字母:大小写字母共大小写字母共大小写字母共大小写字母共5252个个个个2.2.数字:数字:数字:数字:0 09 9共共共共1010个个个个3.3.空白符:空白符:空白符:空白符:空格符、制表符、换行符等统称为空白符空格符、制表符、换行符等统称为空白符空格符、制表符、换行符等统称为空白符空格符、制表符、换行符等统称为空白符 4.4.标点和特殊字符:标点和特殊字符:标点和特殊字符:标点和特殊字符:包括表示一条语句结束的包括表示一条语句结束的包括表示一条语句结束的包括表示一条语句结束的“;以及逗号表
6、达式中的以及逗号表达式中的以及逗号表达式中的以及逗号表达式中的“”“”等。等。等。等。6高级语言程序设计 南京邮电大学传媒技术学院2.2.2 C语言词汇语言词汇 C C语言使用的词汇分为六类语言使用的词汇分为六类语言使用的词汇分为六类语言使用的词汇分为六类 1.标识符标识符:就是用来标识变量名、符号常量名、:就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。函数名、类型名、文件名等的有效字符序列。在使用标识符时需要注意以下几点:在使用标识符时需要注意以下几点:在使用标识符时需要注意以下几点:在使用标识符时需要注意以下几点:在使用标识符时需要注意以下几点:在使用标识符时需要
7、注意以下几点:1 1 1)标识符命名应尽量作到见名知意。)标识符命名应尽量作到见名知意。)标识符命名应尽量作到见名知意。)标识符命名应尽量作到见名知意。)标识符命名应尽量作到见名知意。)标识符命名应尽量作到见名知意。2 2 2)C CC语言的标识符大小写字母敏感,即代表不同变量。语言的标识符大小写字母敏感,即代表不同变量。语言的标识符大小写字母敏感,即代表不同变量。语言的标识符大小写字母敏感,即代表不同变量。语言的标识符大小写字母敏感,即代表不同变量。语言的标识符大小写字母敏感,即代表不同变量。例如例如例如例如例如例如PIPIPI和和和和和和pipipi会被认为是两个不同的标识符。会被认为是两
8、个不同的标识符。会被认为是两个不同的标识符。会被认为是两个不同的标识符。会被认为是两个不同的标识符。会被认为是两个不同的标识符。3 3 3)标识符的长度受不同版本的)标识符的长度受不同版本的)标识符的长度受不同版本的)标识符的长度受不同版本的)标识符的长度受不同版本的)标识符的长度受不同版本的C CC语言编译系统语言编译系统语言编译系统语言编译系统语言编译系统语言编译系统 以及具体计算机系统的限制。以及具体计算机系统的限制。以及具体计算机系统的限制。以及具体计算机系统的限制。以及具体计算机系统的限制。以及具体计算机系统的限制。7高级语言程序设计 南京邮电大学传媒技术学院 2.2.2 C语言词汇
9、语言词汇 C C语言的关键字分为以下几类:语言的关键字分为以下几类:语言的关键字分为以下几类:语言的关键字分为以下几类:1 1)类型说明符。用于定义、说明变量、函数或)类型说明符。用于定义、说明变量、函数或)类型说明符。用于定义、说明变量、函数或)类型说明符。用于定义、说明变量、函数或其他数据结构的类型。其他数据结构的类型。其他数据结构的类型。其他数据结构的类型。2 2)语句定义符。用于表示一个语句的功能。)语句定义符。用于表示一个语句的功能。)语句定义符。用于表示一个语句的功能。)语句定义符。用于表示一个语句的功能。3 3)预处理命令字。用于表示一个预处理命令。)预处理命令字。用于表示一个预
10、处理命令。)预处理命令字。用于表示一个预处理命令。)预处理命令字。用于表示一个预处理命令。2.关键字:关键字是由关键字:关键字是由C C语言规定的具有特定意语言规定的具有特定意义的字符串,通常也称为保留字。义的字符串,通常也称为保留字。如例如例2-1中用中用到的到的float等。等。如例如例2-1中用到的中用到的if。如例如例2-1中用中用到的到的include。8高级语言程序设计 南京邮电大学传媒技术学院 C语言的关键字语言的关键字3 3运算符运算符运算符运算符 C C语言中含有相当丰富的运算符。运算符与变量,函数一起语言中含有相当丰富的运算符。运算符与变量,函数一起语言中含有相当丰富的运算
11、符。运算符与变量,函数一起语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。组成表达式,表示各种运算功能。组成表达式,表示各种运算功能。组成表达式,表示各种运算功能。4 4分隔符分隔符分隔符分隔符 在在在在C C语言中采用的分隔符有逗号和空格等。语言中采用的分隔符有逗号和空格等。语言中采用的分隔符有逗号和空格等。语言中采用的分隔符有逗号和空格等。逗号主要用在类型说明和函数参数表中,分隔各个变量。逗号主要用在类型说明和函数参数表中,分隔各个变量。逗号主要用在类型说明和函数参数表中,分隔各个变量。逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之
12、间,作间隔符。空格多用于语句各单词之间,作间隔符。空格多用于语句各单词之间,作间隔符。空格多用于语句各单词之间,作间隔符。5 5常量常量常量常量C C语言中使用的常量可分为数字常量、字符常量、字符串常语言中使用的常量可分为数字常量、字符常量、字符串常语言中使用的常量可分为数字常量、字符常量、字符串常语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。量、符号常量、转义字符等多种。量、符号常量、转义字符等多种。量、符号常量、转义字符等多种。9高级语言程序设计 南京邮电大学传媒技术学院 C语言的关键字语言的关键字6.注释符注释符1 1)以)以)以)以“/*”/*”开头并
13、以开头并以开头并以开头并以“*“*/”/”结尾的串,用来注释一段;结尾的串,用来注释一段;结尾的串,用来注释一段;结尾的串,用来注释一段;例例例例2-12-1中,中,中,中,“/*/*选择选择选择选择1 1,计算面积,计算面积,计算面积,计算面积*/”/”2 2)用)用)用)用“/”/”注释一行。注释一行。注释一行。注释一行。例例例例2-12-1中的:中的:中的:中的:if(choice=2)if(choice=2)后的后的后的后的“/选择选择选择选择2 2,计算周,计算周,计算周,计算周长长长长”10高级语言程序设计 南京邮电大学传媒技术学院2.3 常量和变量常量和变量2.3.1 常量常量概
14、念:概念:在程序运行过程中,其值不发生改变的在程序运行过程中,其值不发生改变的量称为常量。量称为常量。常量数据的类型一般为上述基本类型中的一种,常量数据的类型一般为上述基本类型中的一种,如:如:整型常量:整型常量:3,0,-1实型常量:实型常量:1.2,-2.345字符常量:字符常量:a,111高级语言程序设计 南京邮电大学传媒技术学院从使用形式上看,常量包括字从使用形式上看,常量包括字面常量和符号常量面常量和符号常量1 1)字面常量。直接以数据值表示的常量,称字面)字面常量。直接以数据值表示的常量,称字面)字面常量。直接以数据值表示的常量,称字面)字面常量。直接以数据值表示的常量,称字面 常
15、量或直接常量常量或直接常量常量或直接常量常量或直接常量 例例例例2-12-1中的中的中的中的2 2便是一个字面常量。便是一个字面常量。便是一个字面常量。便是一个字面常量。2 2)符号常量。以标识符号(以下简称标识符)表)符号常量。以标识符号(以下简称标识符)表)符号常量。以标识符号(以下简称标识符)表)符号常量。以标识符号(以下简称标识符)表 示的常量称为符号常量示的常量称为符号常量示的常量称为符号常量示的常量称为符号常量,例例例例2-12-1中的中的中的中的PIPI就是一个符号常量,并且在使用之前需通过就是一个符号常量,并且在使用之前需通过就是一个符号常量,并且在使用之前需通过就是一个符号常
16、量,并且在使用之前需通过#define#define命令定义。定义后,在程序中,命令定义。定义后,在程序中,命令定义。定义后,在程序中,命令定义。定义后,在程序中,PIPI将一直代表将一直代表将一直代表将一直代表3.143.14。为什么要引为什么要引为什么要引为什么要引入符号常量入符号常量入符号常量入符号常量 12高级语言程序设计 南京邮电大学传媒技术学院2.3 常量和变量常量和变量2.3.2 变量变量概念:概念:在程序运行过程中值可以改变的量,在程序运行过程中值可以改变的量,在程序运行过程中值可以改变的量,在程序运行过程中值可以改变的量,称为变量。称为变量。称为变量。称为变量。例例例例2-1
17、2-1中,中,中,中,choicechoice,radiusradius等为变量。执行程序的输入语等为变量。执行程序的输入语等为变量。执行程序的输入语等为变量。执行程序的输入语句后,这两个变量依次保存句后,这两个变量依次保存句后,这两个变量依次保存句后,这两个变量依次保存2 2和和和和1.01.0,即变量值分别为,即变量值分别为,即变量值分别为,即变量值分别为2 2和和和和1.01.0。要区别开要区别开要区别开要区别开变量名变量名变量名变量名和和和和变量值变量值变量值变量值以及以及以及以及变量的地址变量的地址变量的地址变量的地址这三个概念。这三个概念。这三个概念。这三个概念。13高级语言程序设
18、计 南京邮电大学传媒技术学院2.4 数据类型(数据类型(Data Type)数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型整型整型实型(浮点型)实型(浮点型)字符型字符型枚举类型枚举类型数组类型数组类型结构体类型结构体类型共同体类型共同体类型单精度实型单精度实型双精度实型双精度实型短整型短整型基本整型基本整型长整型长整型按数据的运算按数据的运算按数据的运算按数据的运算范围、处理方范围、处理方范围、处理方范围、处理方式、占据的存式、占据的存式、占据的存式、占据的存储空间大小、储空间大小、储空间大小、储空间大小、构造特点来划构造特点来划构造特点来划构造特点来划分分分分
19、14高级语言程序设计 南京邮电大学传媒技术学院整型数据整型数据1整型常量整型常量即表示整数的常量,即表示整数的常量,即表示整数的常量,即表示整数的常量,C C语言中的整数有语言中的整数有语言中的整数有语言中的整数有3 3种表示形式:种表示形式:种表示形式:种表示形式:1 1)十进制形式。如)十进制形式。如)十进制形式。如)十进制形式。如9999,-1-1。2 2)八进制形式。以数字)八进制形式。以数字)八进制形式。以数字)八进制形式。以数字0 0打头:如打头:如打头:如打头:如012012,0 0。3 3)十六进制形式。以)十六进制形式。以)十六进制形式。以)十六进制形式。以0 x0 x(0X
20、)0X)打头:如打头:如打头:如打头:如0 x120 x12,0Xff0Xff。常见错误:常见错误:1 1)把表示八进制和十六进制的)把表示八进制和十六进制的)把表示八进制和十六进制的)把表示八进制和十六进制的0 0和和和和0 x0 x误写成误写成误写成误写成o o和和和和oxox。2 2)八进制中出现超过)八进制中出现超过)八进制中出现超过)八进制中出现超过“7”7”的数。的数。的数。的数。15高级语言程序设计 南京邮电大学传媒技术学院 2.整型变量整型变量n n有符号整型(有符号整型(有符号整型(有符号整型(signed signed intint):):):):通常简写为通常简写为通常简
21、写为通常简写为intint,在内存中占两个字节。,在内存中占两个字节。,在内存中占两个字节。,在内存中占两个字节。intint型变量的范围为型变量的范围为型变量的范围为型变量的范围为 -32768 -327683276732767。n n无符号整型(无符号整型(无符号整型(无符号整型(unsigned unsigned intint):):):):可简写为可简写为可简写为可简写为unsignedunsigned。在内存中占两个字节,。在内存中占两个字节,。在内存中占两个字节,。在内存中占两个字节,unsignedunsigned变量的范围变量的范围变量的范围变量的范围为为为为0 0655356
22、5535。n n有符号短整型(有符号短整型(有符号短整型(有符号短整型(signed short signed short intint):):):):可简写为可简写为可简写为可简写为shortshort,范围与,范围与,范围与,范围与intint相同。相同。相同。相同。n n无符号短整型(无符号短整型(无符号短整型(无符号短整型(unsigned short unsigned short intint):):):):可简写为可简写为可简写为可简写为unsigned shortunsigned short,范围与,范围与,范围与,范围与unsigned unsigned intint相同。相同
23、。相同。相同。n n有符号长整型(有符号长整型(有符号长整型(有符号长整型(signed long signed long intint):):):):可简写为可简写为可简写为可简写为longlong,在内存中占四个字节,范围为,在内存中占四个字节,范围为,在内存中占四个字节,范围为,在内存中占四个字节,范围为-2-231312 23131-1-1。n n无符号长整型(无符号长整型(无符号长整型(无符号长整型(unsigned long unsigned long intint):):):):可简写为可简写为可简写为可简写为unsigned longunsigned long,范围为,范围为,
24、范围为,范围为0 02 23232-1-1。16高级语言程序设计 南京邮电大学传媒技术学院【例【例2-2】请观察下面程序的运行结果】请观察下面程序的运行结果#include#includevoid main()void main()shortshort n=32768;n=32768;printf(n=%d,n);printf(n=%d,n);程序运行结果程序运行结果程序运行结果程序运行结果:n=n=-327683276817高级语言程序设计 南京邮电大学传媒技术学院例例2-2思考,请观察下面程序的运行结果思考,请观察下面程序的运行结果#include#includevoid main()vo
25、id main()unsignedunsigned short n=32768;short n=32768;printf(n=%d,n);printf(n=%d,n);程序运行结果程序运行结果程序运行结果程序运行结果:n=32768n=3276818高级语言程序设计 南京邮电大学传媒技术学院2.4.2 实型数据实型数据1实型常量实型常量1 1)十进制数形式:由数码)十进制数形式:由数码)十进制数形式:由数码)十进制数形式:由数码0 90 9和小数点组成。例如:和小数点组成。例如:和小数点组成。例如:和小数点组成。例如:0.00.0,.25.25,5.7895.789,0.130.13,5.05
26、.0,300.300.,-267.8230-267.8230等均为等均为等均为等均为合法的实数。合法的实数。合法的实数。合法的实数。注意:注意:注意:注意:小数点不能缺。小数点不能缺。小数点不能缺。小数点不能缺。2 2)指数形式:)指数形式:)指数形式:)指数形式:123e3123e3,.123e6.123e6,123.E3123.E3,1.23E51.23E5。指数形式的指数形式的指数形式的指数形式的规范化形式规范化形式规范化形式规范化形式为:尾数中小数点左边有且只为:尾数中小数点左边有且只为:尾数中小数点左边有且只为:尾数中小数点左边有且只能有一位非零数字。能有一位非零数字。能有一位非零数
27、字。能有一位非零数字。19高级语言程序设计 南京邮电大学传媒技术学院注意注意:e e(E E)前一定要有数字(尾数)前一定要有数字(尾数)前一定要有数字(尾数)前一定要有数字(尾数)e e(E E)后一定要有整数(指数)后一定要有整数(指数)后一定要有整数(指数)后一定要有整数(指数)尾数和尾数和尾数和尾数和e e(E E)之间不能有任何分隔符)之间不能有任何分隔符)之间不能有任何分隔符)之间不能有任何分隔符常见的错误书写形式:常见的错误书写形式:常见的错误书写形式:常见的错误书写形式:常见的错误书写形式:常见的错误书写形式:E1E1E1 原因:阶码标志原因:阶码标志原因:阶码标志原因:阶码标
28、志原因:阶码标志原因:阶码标志E E E之前无数字。之前无数字。之前无数字。之前无数字。之前无数字。之前无数字。53.-E353.-E353.-E3 原因:负号位置不对。原因:负号位置不对。原因:负号位置不对。原因:负号位置不对。原因:负号位置不对。原因:负号位置不对。2.7E 2.7E 2.7E 原因:无阶码。原因:无阶码。原因:无阶码。原因:无阶码。原因:无阶码。原因:无阶码。20高级语言程序设计 南京邮电大学传媒技术学院2.实型变量实型变量实型数据在内存中的存放形式:实型数据在内存中的存放形式:所以实型数据所以实型数据-111.1101B在内存中的存放形式为:在内存中的存放形式为:21高
29、级语言程序设计 南京邮电大学传媒技术学院n单精度型单精度型float单精度型占单精度型占4个字节内存空间个字节内存空间只能提供七位有效数字。只能提供七位有效数字。n双精度型双精度型double 双精度型占双精度型占8 个字节内存空间个字节内存空间可提供可提供16位有效数字。位有效数字。实型变量分为两类实型变量分为两类22高级语言程序设计 南京邮电大学传媒技术学院【例例2-3】分析观察以下程序的运行结果分析观察以下程序的运行结果#includevoid main()float f;double d;f=111111.111111;d=111111.111111;printf(f=%fnd=%fn
30、,f,d);程序运行结果:程序运行结果:f=111111.109375 d=111111.11111123高级语言程序设计 南京邮电大学传媒技术学院2.4.4 字符型数据字符型数据1字符常量字符常量字符常量有两种表示方法:字符常量有两种表示方法:字符常量有两种表示方法:字符常量有两种表示方法:1 1)普通表示形式)普通表示形式)普通表示形式)普通表示形式,用单引号括起的单个字符。,用单引号括起的单个字符。,用单引号括起的单个字符。,用单引号括起的单个字符。如如如如AA,aa,$,等。等。等。等。2 2)转义字符表示形式。)转义字符表示形式。)转义字符表示形式。)转义字符表示形式。转义字符有以下
31、三种用法:转义字符有以下三种用法:转义字符有以下三种用法:转义字符有以下三种用法:表示控制字符,表示特殊字符,表示所有字符,表示控制字符,表示特殊字符,表示所有字符,表示控制字符,表示特殊字符,表示所有字符,表示控制字符,表示特殊字符,表示所有字符,24高级语言程序设计 南京邮电大学传媒技术学院常用的转义字符及其含义常用的转义字符及其含义 转义字符转义字符转义字符转义字符含义含义含义含义nnnn换行换行换行换行tttt水平制表水平制表水平制表水平制表 bbbb退格退格退格退格rrrr回车(不换行)回车(不换行)回车(不换行)回车(不换行)0000空字符空字符空字符空字符单引号单引号单引号单引号
32、”双引号双引号双引号双引号一个反斜杠字符一个反斜杠字符一个反斜杠字符一个反斜杠字符dddddddddddddddddddddddd指要表示字符的指要表示字符的指要表示字符的指要表示字符的ASCIIASCIIASCIIASCII码的一到三位八进制数码的一到三位八进制数码的一到三位八进制数码的一到三位八进制数xhhxhhxhhxhhhhhhhhhh指要表示字符的指要表示字符的指要表示字符的指要表示字符的ASCIIASCIIASCIIASCII码的一到两位十六进制数码的一到两位十六进制数码的一到两位十六进制数码的一到两位十六进制数25高级语言程序设计 南京邮电大学传媒技术学院【例【例2-4】转义字符
33、的使用举例】转义字符的使用举例#include#includevoid main()void main()printf(NumtNamen);printf(NumtNamen);printf(x31t101n);printf(x31t101n);程序运行结果(其中程序运行结果(其中程序运行结果(其中程序运行结果(其中 代表一个空格):代表一个空格):代表一个空格):代表一个空格):NumNameNumName1A1A26高级语言程序设计 南京邮电大学传媒技术学院 2字符型变量字符型变量用以保存字符类型数据的变量为字符型变量。用以保存字符类型数据的变量为字符型变量。例如:例如:char c1;字
34、符型变量的类型说明字符型变量的类型说明字符型变量的类型说明字符型变量的类型说明符符符符字符型变量字符型变量字符型变量字符型变量字符型变量保存的是字符数据的字符型变量保存的是字符数据的字符型变量保存的是字符数据的字符型变量保存的是字符数据的ASCIIASCII,字符型变量只占一个字节。字符型变量只占一个字节。字符型变量只占一个字节。字符型变量只占一个字节。27高级语言程序设计 南京邮电大学传媒技术学院【例【例2-5】字符变量的赋值举例】字符变量的赋值举例#include#includevoid main()void main()char c1,c2,c3,c4;char c1,c2,c3,c4;
35、c1=A;c2=65;c3=x41;c4=101;c1=A;c2=65;c3=x41;c4=101;printf(c1=%c;c2=%c;c3=%c;c4=%cn,printf(c1=%c;c2=%c;c3=%c;c4=%cn,c1,c2,c3,c4);c1,c2,c3,c4);printf(c1=%d;c2=%d;c3=%d;c4=%dn,printf(c1=%d;c2=%d;c3=%d;c4=%dn,c1,c2,c3,c4);c1,c2,c3,c4);程序运行结果:程序运行结果:c1=A;c2=A;c3=A;c4=Ac1=65;c2=65;c3=65;c4=6528高级语言程序设计 南京邮
36、电大学传媒技术学院【例【例2-6】大小写字母的转换大小写字母的转换#include#includevoid main()void main()char c1,c2;char c1,c2;c1=a;c1=a;c2=A;c2=A;printf(%c%cn,c1,c2);printf(%c%cn,c1,c2);c1=c1-32;/c1=c1-32;/小写字母转大写字母小写字母转大写字母小写字母转大写字母小写字母转大写字母 c2=c2+32;/c2=c2+32;/大写字母转小写字母大写字母转小写字母大写字母转小写字母大写字母转小写字母 printf(%c%cn,c1,c2);printf(%c%cn,
37、c1,c2);程序运行结果程序运行结果:a Aa AA aA a 29高级语言程序设计 南京邮电大学传媒技术学院 3字符串常量字符串常量 用一对双引号括起来的零个或多个字符序列用一对双引号括起来的零个或多个字符序列用一对双引号括起来的零个或多个字符序列用一对双引号括起来的零个或多个字符序列称为称为称为称为字符串字符串字符串字符串。字符串的长度是指该字符串的字符串的长度是指该字符串的字符串的长度是指该字符串的字符串的长度是指该字符串的有效有效有效有效字符个数,字符个数,字符个数,字符个数,不包括双引号以及字符串结束标志。不包括双引号以及字符串结束标志。不包括双引号以及字符串结束标志。不包括双引号
38、以及字符串结束标志。示例:示例:示例:示例:字符串:字符串:字符串:字符串:TeacherTeacher 实际串长为实际串长为实际串长为实际串长为7 7 ,占了,占了,占了,占了8 8字节空间字节空间字节空间字节空间(字符串结束标志字符串结束标志字符串结束标志字符串结束标志也也也也占一个字节占一个字节占一个字节占一个字节)。30高级语言程序设计 南京邮电大学传媒技术学院常见错误:常见错误:1 1)混淆单个字符和只包含一个字符的字符串的区别)混淆单个字符和只包含一个字符的字符串的区别)混淆单个字符和只包含一个字符的字符串的区别)混淆单个字符和只包含一个字符的字符串的区别。例:例:例:例:char
39、 ch=c;char ch=c;语句错误,字符串语句错误,字符串语句错误,字符串语句错误,字符串c c 在内存中占两个字节空间,在内存中占两个字节空间,在内存中占两个字节空间,在内存中占两个字节空间,charchar类型变量类型变量类型变量类型变量chch占一个字节内存空间。正确的书写形式为:占一个字节内存空间。正确的书写形式为:占一个字节内存空间。正确的书写形式为:占一个字节内存空间。正确的书写形式为:char ch=c;char ch=c;2 2)以为存在包含零个字符的字符数据。)以为存在包含零个字符的字符数据。)以为存在包含零个字符的字符数据。)以为存在包含零个字符的字符数据。例例例例:
40、char ch=;char ch=;只有包含零个字符的空串,但没有包含零个字符的空字只有包含零个字符的空串,但没有包含零个字符的空字只有包含零个字符的空串,但没有包含零个字符的空字只有包含零个字符的空串,但没有包含零个字符的空字符常量,正确的书写形式应该为:符常量,正确的书写形式应该为:符常量,正确的书写形式应该为:符常量,正确的书写形式应该为:char ch=0 char ch=0。如果想把一个空格字符保存到如果想把一个空格字符保存到如果想把一个空格字符保存到如果想把一个空格字符保存到chch变量中,空格字符也要变量中,空格字符也要变量中,空格字符也要变量中,空格字符也要表示出来,例如:表示
41、出来,例如:表示出来,例如:表示出来,例如:char ch=;char ch=;(其中(其中(其中(其中 代表一个空格)代表一个空格)代表一个空格)代表一个空格)31高级语言程序设计 南京邮电大学传媒技术学院2.5 运算符及表达式算术运算符算术运算符算术运算符算术运算符 +-*/%+-+-*/%+-关系运算符关系运算符关系运算符关系运算符 =!=逻辑运算符逻辑运算符逻辑运算符逻辑运算符 !&|&|位运算符位运算符位运算符位运算符|&赋值运算符赋值运算符赋值运算符赋值运算符 =及其复合赋值运算符及其复合赋值运算符及其复合赋值运算符及其复合赋值运算符条件运算符条件运算符条件运算符条件运算符?:?:
42、?:?:逗号运算符逗号运算符逗号运算符逗号运算符 ,指针和取地址运算符指针和取地址运算符指针和取地址运算符指针和取地址运算符 *&求字节运算符求字节运算符求字节运算符求字节运算符 sizeofsizeof强制类型转换运算符强制类型转换运算符强制类型转换运算符强制类型转换运算符 (类型)(类型)(类型)(类型)分量运算符分量运算符分量运算符分量运算符 .-.-下标运算符下标运算符下标运算符下标运算符 其他运算符其他运算符其他运算符其他运算符 例如例如例如例如()()语言的运算符分为以下几类:语言的运算符分为以下几类:表达式:表达式:由运算符由运算符和运算对象组成的和运算对象组成的合法式子。合法式
43、子。32高级语言程序设计 南京邮电大学传媒技术学院2.5.2 算术运算符和算术表达式 1.C1.C语言中基本的算术运算符语言中基本的算术运算符 对象数对象数对象数对象数 运算符运算符运算符运算符操作操作操作操作运算对象的类型运算对象的类型运算对象的类型运算对象的类型结果类型结果类型结果类型结果类型单目单目单目单目+取原值取原值取原值取原值整型或实型整型或实型整型或实型整型或实型整型或实型整型或实型整型或实型整型或实型-原值取原值取原值取原值取反反反反双目双目双目双目+加法加法加法加法整型或实型整型或实型整型或实型整型或实型整型或实型整型或实型整型或实型整型或实型-减法减法减法减法整型或实型整型
44、或实型整型或实型整型或实型整型或实型整型或实型整型或实型整型或实型*乘法乘法乘法乘法整型或实型整型或实型整型或实型整型或实型实型或实型实型或实型实型或实型实型或实型/除法除法除法除法整型或实型整型或实型整型或实型整型或实型实型或实型实型或实型实型或实型实型或实型%整除取整除取整除取整除取余余余余整型整型整型整型整型整型整型整型33高级语言程序设计 南京邮电大学传媒技术学院注意:注意:1 1)参与运算的对象数。)参与运算的对象数。)参与运算的对象数。)参与运算的对象数。2 2)参与运算对象的类型。)参与运算对象的类型。)参与运算对象的类型。)参与运算对象的类型。需要注意的是取模运算,即求余数运算
45、需要注意的是取模运算,即求余数运算需要注意的是取模运算,即求余数运算需要注意的是取模运算,即求余数运算%,要求,要求,要求,要求两侧的操作对象均为整型数据。两侧的操作对象均为整型数据。两侧的操作对象均为整型数据。两侧的操作对象均为整型数据。3 3)运算结果的类型。)运算结果的类型。)运算结果的类型。)运算结果的类型。C C语言规定:两个整数相除,其结果也为整数,小语言规定:两个整数相除,其结果也为整数,小语言规定:两个整数相除,其结果也为整数,小语言规定:两个整数相除,其结果也为整数,小数部分被舍弃。数部分被舍弃。数部分被舍弃。数部分被舍弃。例如,例如,例如,例如,5/25/2得得得得2 2,
46、结果为整型。,结果为整型。,结果为整型。,结果为整型。34高级语言程序设计 南京邮电大学传媒技术学院【例例2-7】字符型数据的算术运算字符型数据的算术运算#include#includevoid main()void main()char c;/char c;/定义字符型变量定义字符型变量定义字符型变量定义字符型变量 int n;/int n;/定义整型变量定义整型变量定义整型变量定义整型变量 c=9;/c=9;/字符字符字符字符99赋值给赋值给赋值给赋值给c c n=c-0;/n=c-0;/将将将将c c中的字母变成数字中的字母变成数字中的字母变成数字中的字母变成数字9 9后赋给后赋给后赋给
47、后赋给n n printf(%c%dn,c,n);printf(%c%dn,c,n);程序运行结果:程序运行结果:9 99 9字符字符字符字符字符字符数字数字数字数字数字数字35高级语言程序设计 南京邮电大学传媒技术学院2自增、自减运算符及其表达式自增、自减运算符及其表达式对象数对象数 运算符运算符操作操作运算对象的类型运算对象的类型结果结果类型类型单目单目+(+(前缀前缀)变量自增变量自增1 1,然后使用,然后使用整型、实型整型、实型或字符型变量或字符型变量类型类型不变不变+(+(后缀后缀)先使用原变量值,然后先使用原变量值,然后自增自增1 1-(-(前缀前缀)变量先减变量先减1 1,然后使
48、用,然后使用-(-(后缀后缀)先使用原变量值,然后先使用原变量值,然后减减1 136高级语言程序设计 南京邮电大学传媒技术学院在使用自增、自减运算符时,需要注意以下几点:在使用自增、自减运算符时,需要注意以下几点:在使用自增、自减运算符时,需要注意以下几点:在使用自增、自减运算符时,需要注意以下几点:1 1)+和和和和-只能用于变量,不能用于常量和表达式。只能用于变量,不能用于常量和表达式。只能用于变量,不能用于常量和表达式。只能用于变量,不能用于常量和表达式。例如以下是错误用法:例如以下是错误用法:例如以下是错误用法:例如以下是错误用法:a+a+;+(a+b);+(a+b);#define
49、ONE 1 ONE+;#define ONE 1 ONE+;2 2)出现多个运算符时,编译器在处理时尽可能多的从左到右将)出现多个运算符时,编译器在处理时尽可能多的从左到右将)出现多个运算符时,编译器在处理时尽可能多的从左到右将)出现多个运算符时,编译器在处理时尽可能多的从左到右将若干个字符组合成一个运算符。若干个字符组合成一个运算符。若干个字符组合成一个运算符。若干个字符组合成一个运算符。i+j i+j应解释为应解释为应解释为应解释为(i+)+j(i+)+j,而不是,而不是,而不是,而不是i+(+j)i+(+j)。3 3)在)在)在)在C C语言中调用函数时,实际参数的处理顺序是从右到左。语
50、言中调用函数时,实际参数的处理顺序是从右到左。语言中调用函数时,实际参数的处理顺序是从右到左。语言中调用函数时,实际参数的处理顺序是从右到左。37高级语言程序设计 南京邮电大学传媒技术学院【例例2-8】分析观察下面程序的运行结果分析观察下面程序的运行结果#include#includevoid main()void main()int i=1;int i=1;printf(%d,%d,i,i+);printf(%d,%d,i,i+);程序运行结果:程序运行结果:程序运行结果:程序运行结果:程序运行结果:程序运行结果:1,11,11,1思考思考思考:输出语句为输出语句为输出语句为:printf(