第二章§2.2常量、变量和标识符一、标识符和其他高级语言一样,用来标识常量名、变量名、函数名、数组名、类型名、文件名等对象的有效字符序列称为标识符。简单的说,标识符就是一个名字。1.标识符的命名规则(1)C语言规定标识符只能由字母(大小写均可)、数字和下划线3种字符组成。(2)第1个字符必须为字母或下划线。2、组成:(1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线。(2)大小写敏感(3)不能使用关键字(4)长度:最长32个字符(5)命名原则:见名知意(name、time)不宜混淆如l与I,o与0标识符有什么组成?3.注意事项(1)标识符的命名是区分大小写的,例如NAME、name及Name为3个不同的标识符。习惯上变量名用小写字母表示,符号常量一般使用大写英文字母。(2)C语言中的关键字是一类特殊的标识符,它们具有特定的含义,已被C语言本身使用,不能用作变量名、常量名、函数名等。(3)C语言中提供了大量的库函数与头文件,这些库函数名和头文件中定义的一些标识符都统称为预定义标识符。用户定义标识符时应注意避免和预定义标识符重名。(1)关键字关键字在程序中代表着固定的含义,不能另作他用。如用来说明变量类型的标识符char、float以及for、if等都已有专门的用途,它们不能用作变量名或函数名。autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile注:C语言的关键字都是小写的。4.标识符的分类(2)预定义标识符预定义标识符在C语言中也有特定的含义,如库函数的名字和预编译处理命令等。C语言语法允许用户把这类标识符另作他用,但是失去了在系统中规定的原意。为了避免误解,建议用户不要把这些预定义标识符另作它用。(3)用户标识符由用户根据需要定义的标识符称为用户标识符。一般用来给变量、函数、数组或文件等命名。如果用户标识符与关键字相同,程序会给出出错信息;若与预定义标识符相同,则预定义标识符将失去原来的含义。※重点提示:标识符的命名规则:(1)C语言规定标识符只能由字母(大小写均可,但区分大小写)、数字和下划线3种字符组成(2)第1个字符必须为字母或下划线(3)已被C语言本身使用,不能用作变量名、常量名、函数名等。二、基本数据类型数据为什么有类型之分?在程序中要处理大量的数据,对于数据来说,它们有着某些相同的属性,处理规律相同,存储格式、取值范围也相同。我们将具有相同属性的数据称为一类,即数据类型,符合计算机中数据的存储方式。学习任何语言,首先要学习其数据类型.C语言有丰富的数据类型,可以表达复杂的数据结构C语言的数据类型整型字符型浮点型(实型)单精度型双精度型数组类型结构类型共用体类型基本类型构造类型空类型指针类型数据类型基本数据类型•常量•变量在计算机中存储的数据,按存储的性质分,可分为:1、常量类型十进制:以非0开始八进制:以”0“开始十六进制:以”0x“开始小数形式表示指数形式表示整型常量实型常量字符型常量常量类型1、常量定义在程序执行过程中,其值始终不变的量,常量不占用存储空间。分类整型常数、实型常数、字符常数。特殊常量符号常量用一个符号名来表示一个常量。符合标示符的命名规则。十进制数:非0开头。例如:12340-1234八进制数:以0开头。例如:0123401000-01234十六进制数:以0x开头。例如:0x120x0-0xc41-1整型常量定义是由数字串组成的数据。分类十进制常数、八进制常数和十六进制常数。规定:实型常量只能用十进制形式表示,不能用八进制或十六进制表示。实数在C语言中又称浮点数,它有两种表示形式:1.十进制小数形式:由0~9数字和小数点组成(注意必须有小数点)如:.123,0.123,123.0,123.,0.02.指数形式:就是用dEn的形式表示自然表示法的实型常数,其中:d为数值部分;n为指数部分,必须为整数。注意:1、e或E之前必须有数字,e后面必须有数字且指数必须为整数。e3,2.1e3.5,e2、实数在用指数形式输出时是按规范化的指数形式输出。1-2实型常量字符常量是由一对引号括起的一个或多个字符。当一个字符时,使用单引号;当是字符串(一个或者为多个字符)时,采用双引号。举例:'a'aabc'8'1231-3字符常量定义注明1.单引号和双引号定义的字符常量的意义不同。2.单双引号是英文的单双引号,而不是中文意义下的单双引号。3.单字符可看成整形数和字符型数输出,也可对单字符数据进行算术运算。转义字符定义:C语言中一些以\开头的字符串具有特殊意义,具有控制功能,这些字符串称为转义字符,用单引号括起。常用的以′\′开头的特殊字符如表2.3所示。字符形式功能\n换行\t横向跳格(跳到下一个输出区)\v竖向跳格\b退格\r回车\f走纸换页\\反斜杠字符\′单引号字符\″双引号字符\a报警\0空值\ddd1到3位8进制数所代表的字符\xhh1到2位16进制数所代表的字符字符常量与字符串常量不同hello\0字符串“hello”在内存中:aa\0‘a’“a”例空串“”:\0没有字符串变量,用字符串用数组存放存储:每个字符串尾自动加一个‘\0’作为字符串结束标志.例1:例2:例3:1-4字符串常量2、变量定义变量就是在程序执行过程中,其值可以改变的量。变量用来临时保存程序运行过程中的中间结果。在程序中对变量的访问(存入,读取)都是通过变量名进行的。变量在内存占据存储空间,变量实质上是代表内存中的某个存储单元。abcde7c=7实质:把数据7存入c所代表的存储单元中。2、变量注意:在C语言程序中,所有的变量必须加以说明,没有任何隐含的变量。变量说明主要是指出变量的名称,确定变量的数据类型。在C语言程序中,变量必须“先定义、后使用”。数据类型变量1[,变量2,…,变量n];格式:例:inta,b,c;变量类型基本型:用“int”表示短整型:用“short”表示长整形:用“long”表示无符号型:用“unsigned”表示单精度型:用“float”表示双精度型:用“double”表示整型变量实型变量字符型变量:用“char”表示变量类型基本数据类型的修饰符修饰符含义signed带符号修饰符unsigned无符号修饰符long长型修饰符short短型修饰符表12-1短整型定义格式定义举例取值范围shortint变量名表;shortinti,j,k;shortn;当n=5时:0000000000000101当n=-5时:11111111111110112字节(16位):-32768~32767shortinta=123;补充2-2基本整型定义格式定义举例取值范围int变量名表;inti,j,k;intn=5;//定义变量同时进行初始化当n=5时:当n=-5时:4字节(32位):-231~23110100000000000000000000000000000110111111111111111111111111111112-3长整型定义格式定义举例取值范围longint变量名表;longinti,j,k;longn;当n=5时:当n=-5时:-231~2311010000000000000000000000000000011011111111111111111111111111111longinti=1234567;4字节(32位):2-4无符号整数定义格式定义举例取值范围unsignedint变量名表;unsignedinti,j,k;unsignedn;当n=5时:00000000000001012字节(16位):0~65535大于等于零unsignedintn=-29;unsignedintn=1234;2-5实型数据实型数据(又称:浮点型)实型数分类单精度:双精度float:占4字节,提供7位有效数字double:占8字节,提供15~16位有效数字floata,b,c;doublex,y;例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/2-6字符变量定义格式定义举例变量性质char变量名;charc1,c2,c3;charc4;一个字符变量在内存中占一个字节。字符变量只能存放一个字符。字符在内存中以ASCII码值的形式存储,因此可以像整数一样运算。注明不能把字符串常量赋给字符变量。没有字符串变量,用字符串用数组存放按作用域的不同,变量分为局部变量和全局变量。在函数内部说明的变量称为局部变量。局部变量仅由其被定义的模块内部的语句所访问。全局变量又称全程变量或外部变量。全局变量贯穿整个程序,并且可被任何一个模块使用。变量的作用域§2.5算术表达式算术运算符关系运算符逻辑运算符单目运算符:一个运算对象双目运算符:两个运算对象按性质分类按操作个数分运算符§2.5.1算术运算符+加法运算符或正值运算符。-减法运算符或负值运算符。*乘法运算符。/除法运算符。%模除运算符,或称为求余运算符。运算规则1.运算的优先顺序为先*、/、%,后+、-同等优先级从左到右运算。优先级别相同时,则按规定“自左至右”,即先左后右。举例:1/21.0/2.02.5*8.02.两个类型相同的操作数,运算结果类型也相同。——类型匹配的原则!!!考点1运算规则3.两个类型不同的操作数,运算结果类型与其中类型较高的类型相同。举例:1.0/21/2.02.5*84.求余运算(%)的运算结果其值为相除所得余数,而符号与被除数的符号相同。注:运算对象都是整型。举例:-13%5=-313%(-5)=3考点2算术表达式定义用算术运算符将运算对象连接起来的式子。其中:运算对象包括常量、变量、函数等。举例a+bc+da+b/c+d(a+b)/(c+d)a+b2c(a+b)/2c(a+b)/2*c(a+b)/(2*c)1、C语言允许双精度、单精度、整型及字符数据之间混合运算10+'a'+1.5–8765.1234'b'是允许的。但有一个规则:先转换成同一类型,再计算。2、强制类型转换表达式:(类型名)(表达式)例:(double)(10%3)=1.0(int)(3.14)=3§2.5.3强制类型转换doublefloat高低图中“”表示必定转换。如'a'+'b',先转换为int。结果为int。转换方法:longunsignedintchar,short§2.6赋值运算符其他语言的赋值语句≈C语言的赋值表达式算式格式变量名=表达式运算过程1.赋值。2.求表达式值。举例a=10Y=1+3*sin(x)*cos(x)赋值运算符的优先级别只高于逗号运算符比其他的运算符都低。赋值运算的说明1.“=”不是等于号,而是赋值运算符。2.赋值运算符左边必须是变量,不能是表达式,并且赋值运算要由右向左进行。A+B=3;A=2+C=3;3.赋值运算符的右边还可是一赋值表达式,称为多重赋值表达式。4.赋值运算符右侧表达式的值即为赋值表达式的值。5.“=”是赋值运算符,不能写成“==”。考点3赋值表达式语句表示在赋值表达式后,加分号;,称为赋值语句。A=5A=5;•定义:在赋值符“=”之前加上其他运算符,可以构成复合的运算符。例如:x+=5等价于x=x+5x*=y+8等价于x=x*(y+8)x%=3等价于x=x%3a*=b等价于a=a*b§2.6.2复合赋值运算符复合赋值运算符C语言可使用的复合赋值运算符有10种。1、与算术运算符组合:+=-=、*=、/=、%=2、与移运算符组合:=、=3、位逻辑运算符组合:&=、∧=、|=复合赋值表达式格式:变量名复合赋值运算符表达式复合的赋值表达式复合赋值运算符表达式等价语句+=a+=3a=a+3;*=x*=y+8