第2章数据类型、运算符和表达式_第1页
第2章数据类型、运算符和表达式_第2页
第2章数据类型、运算符和表达式_第3页
第2章数据类型、运算符和表达式_第4页
第2章数据类型、运算符和表达式_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章第二章 数据类型、运算数据类型、运算符和表达式符和表达式本章导读本章导读 数据是程序处理的对象,是程序设计中数据是程序处理的对象,是程序设计中的重要组成部分。的重要组成部分。C语言为我们提供了丰富的语言为我们提供了丰富的数据类型和运算符及语法规则。数据类型和运算符及语法规则。 内容内容:C语言的基本数据类型、标识符和语言的基本数据类型、标识符和关键字、常量和变量,运算符与表达式以及关键字、常量和变量,运算符与表达式以及数据类型之间的转换等。数据类型之间的转换等。 要求要求:掌握掌握C语言数据和数据类型的相关语言数据和数据类型的相关知识,熟练掌握运算符和表达式的使用方法。知识,熟练掌握运算

2、符和表达式的使用方法。2.1 简介简介 2.1.1 常量常量n常量是指在程序执行的过程中,其值不常量是指在程序执行的过程中,其值不能改变的量(即常数)。能改变的量(即常数)。 n常量的特征是:值保持不变。常量的特征是:值保持不变。 2.1.2 变量变量 变量是指在程序执行的过程中,其值可变量是指在程序执行的过程中,其值可以改变的量。以改变的量。 1变量的三要素变量的三要素一个变量具有三个要素:名称、存储单元一个变量具有三个要素:名称、存储单元和值。变量的名称在声明变量时给出,和值。变量的名称在声明变量时给出,C语言中变量名用标识符表示,标识符是语言中变量名用标识符表示,标识符是用来标识变量、常

3、量、函数等的字符序用来标识变量、常量、函数等的字符序列。列。2标识符的命名规则标识符的命名规则只能由字母(大写或小写字母)、数字和下划线其中的一种或几种组成。第一个符号必须是字母或者下划线。不能使用关键字作为标识符。区分大小写字母。变量名的长度一般不受限制,但有些系统将前8个字符视为有效字符。在命名变量名时,变量名应尽可能见名知意。3有效和无效变量名实例有效和无效变量名实例(1)有效的变量名实例)有效的变量名实例sum Sum(系统认为(系统认为sum与与Sum是两个不同的变量,即区分大是两个不同的变量,即区分大小写字母)小写字母) student lotus_1_2_3 _above (2)

4、无效的变量名实例)无效的变量名实例3days(以数字开头)(以数字开头)char (关键字作为变量名)(关键字作为变量名)2.1.1 数据类型概述数据类型概述整型(整型(int)数据类型基本类型基本类型整型整型单精度型(单精度型(float)字符型(字符型(char)长整型(长整型(long)短整型(短整型(short)实型实型双精度型双精度型(double)枚举类型(枚举类型(enum)(第)(第9章)章)共用体类型(共用体类型(union)(第)(第9章)章)构造类型构造类型结构体类型(结构体类型(struct)(第)(第9章)章)数组类型(第数组类型(第6章)章)空类型(空类型(void

5、)指针类型(指针类型(* *)(第(第8章)章)2.1 数据类型数据类型ab (含有特殊字符)(含有特殊字符)$123 (开头的字符不是合法字符)(开头的字符不是合法字符) C语言规定,在使用变量之前,必须先语言规定,在使用变量之前,必须先声明变量,即向内存申请一个指定类型声明变量,即向内存申请一个指定类型的变量存储空间。的变量存储空间。 变量声明的基本形式:变量声明的基本形式: 数据类型数据类型 变量名;变量名; 1声明变量声明变量2变量的赋值变量的赋值 在程序中,可以对变量赋值,并且可以多次赋在程序中,可以对变量赋值,并且可以多次赋值,但变量的当前值只有值,但变量的当前值只有1个,为最后一

6、个赋个,为最后一个赋值所得到的值。值所得到的值。 变量赋值的形式如下:变量赋值的形式如下: 变量名变量名=指定的值;指定的值; 其中,指定的值可以是一个常量,如其中,指定的值可以是一个常量,如d=5; 也可以是一个表达式,如:也可以是一个表达式,如: a=b+3; 3变量的初始化变量的初始化 所谓变量的初始化就是在声明变量的同时给变量一个初值。具体初始化的形式如下: 数据类型数据类型 变量名变量名=指定的值;指定的值; 其中,指定的值为一个常量。 如果只声明了一个变量,而没有初始化变量,可以在程序中对变量进行赋值。2.1.2 整型整型 根据存储长度的不同,根据存储长度的不同,C语言中的整型语言

7、中的整型又可分为:基本整型、短整型和长整型,分又可分为:基本整型、短整型和长整型,分别用别用int(基本整型)、(基本整型)、short int或或short(短整型)、(短整型)、long int或或long(长整型)来(长整型)来描述。在这些类型标识符之前还可以加上修描述。在这些类型标识符之前还可以加上修饰符饰符unsigned以表示数据是无符号数(以表示数据是无符号数(0和和正整数),没有加正整数),没有加unsigned的数据类型为有的数据类型为有符号类型,可以描述正整数、负整数和符号类型,可以描述正整数、负整数和0。2.1 数据类型数据类型表表2-1 整数类型整数类型 类 型 字节数

8、 取值范围 int2-32768 32767 即即 -215 (215 1)unsigned int 20 65535 即即 0 (216 1)short2-32768 32767 即即 -215 (215 -1)unsigned short20 65535 即即 0 (216 -1)long4-21474836482147483647 即即 -231 (231 -1)unsigned long404294967295 即即 0 (232 -1)1整型常量整型常量 在C语言中整型常量可使用三种形式来表示:十进制、八进制和十六进制。(1)十进制整型常量)十进制整型常量 由数码09组成,且第一个数

9、字不能为0。如,123、456等。(2)八进制整型常量)八进制整型常量 由数字0开头的整型数,由数码07组成。如,0123、076、0605等。 即一个八进制数前要有数字“0”作为前缀,表示是八进制整数。(3)十六进制整型常量)十六进制整型常量 要由“0 x”或“0X”作为前缀,其值由09、af或AF组成。如,0 x23a、0Xe45、0 xFFFF等。以下是不合法的十进制整型常量实例:以下是不合法的十进制整型常量实例:0123 /*数据前有0*/0 x568 /*数据前有前缀0 x*/fff /*组成的数码不是合法的数码*/以下是不合法的八进制整型常量实例:以下是不合法的八进制整型常量实例:

10、0128 /*组成的数码不是合法的数码*/123 /*没有前缀0*/0 x253 /*前缀不合法*/o56 /*前缀不合法,应该是数值“0”,不是字母“o”*/以下是不合法的十六进制整型常量实例:以下是不合法的十六进制整型常量实例:0156 /*前缀不合法*/ox5df /*前缀不合法,是x前应该是数值“0”,不是字母“o”*/0 xfffk /*组成的数码不是合法的数码*/ff78 /*没有前缀0 x*/int a; /*声明整型整型变量a*/long s; /*声明长整型变量s*/unsigned short x; /*声明无符号短整型变量x*/在一个声明变量的语句中也可以同时声明多个同一

11、类型的变量。如:int a,b,c; /*声明3个整型变量a,b,c*/short sum,ave,age,min,max;注意:注意:用一条语句来声明多个同一类型的变量时,变量名和变量名之间要用逗号“,”作为分隔符。2整型变量的声明整型变量的声明3整型变量初始化整型变量初始化int d=5;short m=0,n=1;4整型变量的赋值整型变量的赋值sum=0;min=0;2.2.2 单精度浮点型单精度浮点型在日常生活中除了会用到整型数据外还会用到实型数据,即浮点在日常生活中除了会用到整型数据外还会用到实型数据,即浮点型数据。根据数据类型分类,浮点型可分为:单精度浮点型和双型数据。根据数据类型

12、分类,浮点型可分为:单精度浮点型和双精度浮点型。精度浮点型。 表表1-2-3 C1-2-3 C语言中浮点型数据类型语言中浮点型数据类型类型类型关键关键字字所占所占位数位数表示数的表示数的范围(约)范围(约)单精度单精度浮点型浮点型floafloat t3232位位1010-38-38103838双精度双精度浮点型浮点型doubdoublele6464位位1010- -3083081010e308e3081float型常量型常量浮点型常量有两种表示形式:小数形式和指数形式。(1)小数形式:)小数形式:如0.125、2.167、-.56、.98、6.、50.0等都是合法的浮点型常量。(2)指数形式

13、:)指数形式:如3.2e2、-2.6e4、1.23E-2、4E6、11.23e2等,分别表示3.2102、-2.6104、12310-2、4106、11.23102。注意:注意:字母e或E之前一定要有数字,之后也必须有数字,之后必须是整数。标准C语言允许float型数后使用后缀“f”或“F”,即表示该数为单精度浮点型常量。如2.14f、45.7F、60f等。 2float型变量的声明型变量的声明 float sum; float x,y;3float型变量的初始化型变量的初始化 float ave=87.5; float weight=20.68,high=69.02;4float型变量的赋值

14、型变量的赋值 sum=123.65; x=16.7;2.2.3 双精度浮点型 单精度浮点类型外,还有双精度浮点类型(double)。双精度浮点型与单精度浮点型相似,但该类型的数据所占的内存空间(需8个字节)和取值范围(10-30810e308)都比float类型的数据大很多,精确度也提高了很多,达到了15位。1double型变量的声明型变量的声明double sum;double x,y;2double型变量的初始化型变量的初始化double ave=87.5;double weight=20.68,high=69.02;2.2.4 字符型字符型字符类型的数据即通常的字符。字符类型的数据即通常

15、的字符。1字符型常量字符型常量字符型常量是用单引号括起来的单个字字符型常量是用单引号括起来的单个字符组成,如符组成,如a、b、6、*等都是合法等都是合法的字符型常量。字符常量中的单引号只的字符型常量。字符常量中的单引号只起到定界作用,并不表示字符本身。一起到定界作用,并不表示字符本身。一个字符型常量的存储值是该字符集中对个字符型常量的存储值是该字符集中对应的应的ASCII编码值,常用字符的编码值,常用字符的ASCII码编码表见附录部分。码编码表见附录部分。 Void main() Char ch; Ch=a; Printf(“ch的ASCLL码值是%d,ch本身这个字符是%c”,ch,ch);

16、 2转义字符转义字符 一般来说,字母或数字类型的字符型常量可以直接书写,但有些控制字符如换行符、退格符等不能直接书写,为此C语言提供了一类特殊形式的字符序列来表示这些无法在键盘上直接表示的字符,即转义字符。表表1-2-61-2-6常用的转义字符表常用的转义字符表 n转义字符序列转义字符序列名称名称功能功能单引号单引号产生一个单引号产生一个单引号”双引号双引号产生一个双引号产生一个双引号?问号问号产生一个问号产生一个问号反斜杠反斜杠产生一个反斜杠产生一个反斜杠0空空产生一个空字符产生一个空字符a响铃响铃产生一则警告铃声产生一则警告铃声b退格退格将光标退回一位将光标退回一位f换页换页将光标移到下一

17、页的第一位将光标移到下一页的第一位n换行换行将光标移到下一行的第一位将光标移到下一行的第一位r回车回车将光标移到当前行的第一位将光标移到当前行的第一位t水平制表水平制表将光标移到下一个水平制表位置将光标移到下一个水平制表位置v垂直制表垂直制表将光标移到下一个垂直制表位置将光标移到下一个垂直制表位置ddd八进制字符八进制字符产生一个产生一个13位八进制数所代表的字符位八进制数所代表的字符xhh十六进制字符十六进制字符产生一个产生一个12位十六进制数所代表的字符位十六进制数所代表的字符 void main() printf(An);printf(101n);printf(x41n); 3字符型变量

18、的声明字符型变量的声明char ch1 ;char ch1, ch1 ;4字符型变量的初始化字符型变量的初始化char ch1=* ;5字符型变量的赋值字符型变量的赋值ch1=b ;ch2=0 ;2.3 符号常量 符号常量在使用之前必须先定义,定义形式如符号常量在使用之前必须先定义,定义形式如下:下: #define 符号常量名符号常量名 常量值常量值 其中其中#define是一条被称为是一条被称为“宏定义宏定义”的预处理的预处理命令,作用是将符号常量名定义为其后的常量命令,作用是将符号常量名定义为其后的常量值;符号常量名是合法的标识符,习惯上定义值;符号常量名是合法的标识符,习惯上定义符号常

19、量的标识符用大写字母表示。符号常量符号常量的标识符用大写字母表示。符号常量定义后,只要在程序中出现该标识符的地方均定义后,只要在程序中出现该标识符的地方均用该常量值代替。用该常量值代替。【例【例1.2.1】符号常量使用实例】符号常量使用实例输入圆的半径,计算输入圆的半径,计算该圆的面积。该圆的面积。/* ex1_2_1.c */#include stdio.h#define PI 3.1415926 /*利用宏定义命令定义利用宏定义命令定义值值*/void main()float s,r; scanf(%f,&r); /*从键盘输入一个半径的值从键盘输入一个半径的值*/ s=PI*r*r; /

20、*根据求圆面积的公式计算圆的面积根据求圆面积的公式计算圆的面积*/printf(n半径半径r=%f的圆的面积为:的圆的面积为:s=%fn,r,s);2.4 输入输出函数输入输出函数 计算机执行程序的过程实质上是处理信息的过程,而处理信息时往往需要输入原始数据,输出处理结果。C语言本身不提供输入/输出语句,其输入和输出的功能主要是利用函数来完成的。用于接收和显示数据的函数主要是scanf()和printf(),它们是C语言提供的标准的库函数,其函数的原型在头文件“stdio.h”中定义,所以,如果在程序中使用scanf()或printf(),应在程序最前面包括如下命令行: #include “s

21、tdio.h” 其作用是告诉编译程序,在该程序段中使用了C标准库里的输入或输出函数,这样编译程序就可以正确处理这些函数的使用了。2.4.1 printf()函数printf()函数的功能是将信息按照指定的格函数的功能是将信息按照指定的格式在显示器上显示。式在显示器上显示。1.printf()函数的一般形式函数的一般形式printf(格式控制串格式控制串,输出列表);输出列表);其中其中“格式控制串格式控制串”和和“输出列表输出列表”实际实际上是上是printf()函数的参数,函数的参数,“格式控制串格式控制串”是用双引号括起来的字符串,包括两种是用双引号括起来的字符串,包括两种信息:格式说明符

22、和原样输出字符。信息:格式说明符和原样输出字符。2. 格式说明符和原样输出字符格式说明符和原样输出字符(1)格式说明符)格式说明符格式说明符由格式说明符由“%”开头,格式字符结尾。如开头,格式字符结尾。如%d,%f,%c等,作用分别是将输出的数据以整型、等,作用分别是将输出的数据以整型、浮点型和字符型输出。浮点型和字符型输出。(2)原样输出字符)原样输出字符 原样输出字符是普通字符或转义字符。如例原样输出字符是普通字符或转义字符。如例1.2.1中中,printf()函数中函数中“半径半径r=”和和“的圆的面积的圆的面积s=”都属于原样输出的普通字符;都属于原样输出的普通字符;n是转义字符,作用

23、是换行。是转义字符,作用是换行。 3.输出列表输出列表 “输出列表”即是要输出的对象。其中输出的对象可以是有具体值的变量,可以是常量或可以计算出具体值的表达式,也可以没有输出项。同时输出多个量时,各量之间用逗号间隔。 #include stdio.h void main() long int a=5;printf(a=% ldn,a); void main()int a=1234,b=123;float f=123.456;static char c =Hello,world!;printf(%8d,%-8dn,a,a);printf(%10.5s,%-10.3sn,c,c);printf(%

24、08dn,a); printf(%0+8dn,a); printf(%o,%#o,%X,%#Xn,b,b,b,b); 2.4.2 scanf()函数函数 与printf()函数相对应,scanf()函数是用于输入的函数,即从键盘接收信息,并将信息按照指定的格式进行转换后存放到指定的变量中。1.scanf()函数的一般形式为函数的一般形式为scanf(格式控制串,输入变量地址列表); 其中“格式控制串”和“输入变量地址列表”是scanf()函数的参数,“格式控制串”是用双引号括起来的字符串,包括两种信息:格式说明符和原样输入字符。2. 格式说明符和原样输入字符格式说明符和原样输入字符(1)格式说

25、明符)格式说明符 格式说明符由格式说明符由“%”开头,格式字符结尾。如开头,格式字符结尾。如%d,%f,%c等,作用分别是将输入的数据等,作用分别是将输入的数据转换为整型、浮点型和字符型后,存放到指定转换为整型、浮点型和字符型后,存放到指定的变量中。的变量中。(2)原样输入字符)原样输入字符 原样输入字符是普通字符。在从键盘输入数据原样输入字符是普通字符。在从键盘输入数据时,这些字符要原样输入。例如:时,这些字符要原样输入。例如:scanf(a=%d:c=%f,&a,&c);中中“a=”和和“b=”及冒号都是原样输入字符,在输入时应以如下及冒号都是原样输入字符,在输入时应以如下方式输入:方式输

26、入: a=10:c=4.53. 输入变量地址列表输入变量地址列表 “输入变量地址列表”即是存放数据的变量的地址,可以是一个,也可以是多个。“输入变量地址列表”中如果有多个变量时,变量之间要用逗号“,”间隔开,书写时要在每个变量前面加“&”符号,其后的变量名指明了接收输入数据的变量。【例【例1.2.4】格式控制符】格式控制符%c的使用。的使用。/* ex1_2_4.c */#include stdio.hvoid main()char ch1,ch2;scanf(%c%c,&ch1,&ch2); printf(ch1=%c,ch2=%cn,ch1,ch2);【例1.2.5】格式控制符%s的使用/

27、* ex1_2_5.C */#include stdio.hvoid main()char str20;scanf(%s ,str); /*从键盘接收一串字符从键盘接收一串字符*/printf(str=%sn,str);【例1.2.6】附加格式符*的使用/* ex1_2_6.C */#include stdio.hvoid main()char ch1,ch2;scanf(%c%*c%c,&ch1,&ch2); printf(ch1=%c,ch2=%cn,ch1,ch2);【例1.2.7】附加格式符m的使用/* ex1_2_7.C */#include stdio.hvoid main()float a,b;scanf(%4.2f%f,&a,&b);printf(a=%f,b=%fn,a,b);遇以下情况认为该数据输入结束:遇以下情况认为该数据输入结束:遇空格、遇空格、TAB、或回车;、或回车;遇宽度结束,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论