




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 C语言类型、常量和运算符要学好哦!2.1 C语言的字符集和标识符语言的字符集和标识符 C语言字符集由字母语言字符集由字母(大小写大小写)、数字、数字(09)、空格、标点和空格、标点和特殊字符特殊字符( )组成。组成。注意:注意:n汉字汉字或图形符号一般只出现在字符串常量和注释中。n空白符空白符是指空格符、制表符(Tab键)、换行符等空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用。2.1 C语言的字符集和标识符语言的字符集和标识符作用作用:标识符标识符是是给程序中的对象给程序中的对象(数据类型、数据类型、变变量、常量、函数量、常量、函数等等)所起的所起的名字名字。
2、C语言规定:一个标识符由字母、数字和下划一个标识符由字母、数字和下划线组成,第一个字符必须是字母或下划线线组成,第一个字符必须是字母或下划线。 通常通常以下划线开头的标识符是编译系统专用以下划线开头的标识符是编译系统专用的的。分成。分成三类:三类:保留关键字、标准标识符、保留关键字、标准标识符、2.1 C语言的字符集和标识符语言的字符集和标识符例例2-1:合法合法用户用户标标识识符符和和非法非法用户用户标标识识符符。n以下是正确的用户标识符:WORD as_b3 _224N Else int_2_ Li_ming_main If lea_1 avg3 Xyw8 day n以下是错误的用户标识符
3、:sizeof -wer x-i-a-o 2_int_printf $_238 M.J.YORK #xy a*b 8Tea2.3 数据类型n2.3.1 整数类型n2.3.2 实数(浮点)类型n2.3.3 字符类型(1)如同学生入校后要先分专业一样,不同的专业开设的课程不一样,进行不同方向的培养;那么不同的事件或者任务,涉及的数据不一样,能进行的操作也不一样,比如成绩,是数值,而姓名是字符,它们的在内存里的保存方法不同,能进行的运算也不一样。(2)可以将问题简单化。撇掉不需要的环节,只在小范围内考虑问题(3)不是自然界的每一样东西都能直接用数字表示,可能需要转化或者变通。 C C语言使用的数据类
4、型语言使用的数据类型数据类型决定:1. 数据占内存字节数2. 数据取值范围3. 允许进行的运算 类型相同的数据有相同的表示形式、存储格式以类型相同的数据有相同的表示形式、存储格式以及相关的操作及相关的操作; 程序中使用的所有程序中使用的所有数据和函数数据和函数都都必定属于必定属于某一种某一种数据类型数据类型. C C语言程序可以在不同的编译系统下开发调试程序,语言程序可以在不同的编译系统下开发调试程序,但是它们规定各类数据的精度、数值范围和在内但是它们规定各类数据的精度、数值范围和在内存中所占的具体字节数不同,如果未经说明,本存中所占的具体字节数不同,如果未经说明,本课程课程以以VC6.0VC
5、6.0编译系统为准编译系统为准,讲解,讲解C C语言中各类数语言中各类数据的数据精度、数值范围和在内存中所占用的字据的数据精度、数值范围和在内存中所占用的字节数来。节数来。 先讲常用的数据类型先讲常用的数据类型 2.3.1 2.3.1 整型数据(整型数据(intintegereger) 类型 类型说明符 长度 数的范围 基本型 signedsigned intint 4 4字节字节 -2-2313121474836472147483647 短整型 shortshort int 2 2字节字节 -32768-327683276732767 长整型 long long int 4 4字节字节 -2
6、 -231312 23131-1 -1 无符号整型 unsigned 4字节 04294967295 无符号短整型 unsigned short 2字节 065535 无符号长整型 unsigned long 4字节 0(232-1) 注意:20!=2.43*1018程序中出现的整数常量,被看做int2.3.2 2.3.2 浮点类型浮点类型浮点类型数据表示的是我们生活中带小数的数值类型类型 字节字节 数的绝对值范围数的绝对值范围 有效数有效数floatfloat( (单精度)单精度) 4 4 0 0以及以及3.43.41010-38 -38 3.410103838 7 7 位位doubledo
7、uble( (双精度双精度) ) 8 8 0 0以及以及1.71.71010-308 -308 1.71010308308 1515位位2.3.3 2.3.3 字符型数据字符型数据字符型数据,包括英文字符、数字字符等其他ASCII字符,在计算机内存储的是其ASCII 码。类型类型 字节字节 数值的范围数值的范围 char char 1 1 -128 127 -128 127 以后程序中常用数据类型:以后程序中常用数据类型: int char float double记住这几种类型的英文单词、说明及记住这几种类型的英文单词、说明及所占用的字节数以及大致范围就行了所占用的字节数以及大致范围就行了2
8、.4 常量和变量 2.4.1 常量常量概念的理解常量概念的理解直接常量直接常量n整数类型常量整数类型常量n浮点类型常量浮点类型常量n字符类型常量字符类型常量n字符串常量字符串常量符号常量符号常量#include int main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c); return 0; 定义定义f和和c为单精度浮点型变量为单精度浮点型变量指定指定f的值的值计算计算c的值的值输出输出f和和c的的值值以下程序中:红色字体的都是以下程序中:红色字体的都是。,也就是调试程序的第,也就是调试程序的第6步步 中,中
9、,值不会发生改变。值不会发生改变。2.4.1 常量n常量常量的理解:的理解:在程序运行过程中,其值在程序运行过程中,其值不能被改不能被改变的量变的量。n直接常量直接常量(1)整型常量整型常量:(按:(按int处理,分配处理,分配4个字节。)个字节。) 如如1000,12345,0,-345 八进制整数,八进制整数, 前面加前面加0,例如:,例如:0123 十六进制整数,前面加十六进制整数,前面加0 x,例如:例如:0 x9a 长整型在数据后加长整型在数据后加 L或者或者l (大小写都可以)(大小写都可以)2.4.1 常量n常量常量的理解:的理解:在程序在程序执行执行过程中,其值过程中,其值不能
10、被改不能被改变的量变的量。常量在程序执行时,不分配存储空间。常量在程序执行时,不分配存储空间。n直接常量直接常量(1)整型常量整型常量:(按:(按int处理,分配处理,分配4个字节。)个字节。) 如如1000,12345,0,-345(2)浮点类型)浮点类型常量常量:(:(一般按一般按double处理存放处理存放)十进制小数形式十进制小数形式:如如0.34 -56.79 0.0指数形式指数形式:如如12.34e3 (代表代表12.34 103)n不合法的表示形式:e3、12.-e 、2.5en要求e前、后有数值,e后是整数(3)字符常量)字符常量(char)n 普通字符常量普通字符常量用用括起
11、来的单个字符,例如括起来的单个字符,例如a , K等;注意单引号不是其组成部分等;注意单引号不是其组成部分存储:存储:占一个字节,存其占一个字节,存其Ascii码。码。11和和1是有区别的是有区别的n 转义字符转义字符以以 开头的字符序列。见书开头的字符序列。见书25页表页表2- 4例如:例如: :n换行符;换行符;0空操作符;空操作符; x41A, 101 A转义字符也可以用在字符串中转义字符也可以用在字符串中只能包括一个字符只能包括一个字符,如AB 是不合法的。C C语言中常见转义字符语言中常见转义字符 名称名称字符形式字符形式ASCIIASCII值值空字符(Null)00响铃(Bell)
12、a7退格(BackSpasc)b8水平制表(Horizontal Tab)t9换行(NewLine)n10换页(FormFeed)f12回车(Carriage Return)r13双引号(double quote)34单引号(single quote) 39问号(question mark )?63反斜杠(backslash)92注意:注意:字符型数据在字符型数据在内存中以内存中以ASCII码存储码存储 0表示表示ASCII码为码为0的的字符字符, 0 是是ASCII码为码为48的数字字符的数字字符回车符回车符r与换行符与换行符n的区别的区别1313八进制所代表的字符八进制所代表的字符 ddd
13、ddd13位八进制数为ASCII码的符号1212十六进制所代表的字符十六进制所代表的字符 x xhhhh 12位十六进制数为ASCII码的符号 C C语言中常见转义字符语言中常见转义字符 例: 字符A的ascii码为 65(十进制) 101(八进制) 41 (十六进制) A101 101是3位八进制数据X41 41是2位十六进制数据表示的都是 字符A,后面两个是转义字符。对于程序中出现的某些不能显示的符号,只能用转义字符。(3)字符常量字符常量:用:用单引号单引号定界定界直接字符:如直接字符:如?转义字符转义字符:如:如n,25页表页表2- 4只能包括一个字符只能包括一个字符,如AB 是不合法
14、的。例例1 (转义字符)分析程序运行结果:(转义字符)分析程序运行结果:#include int main( ) printf(x07operationt systemn ); printf(101tA012 ); return 0;响铃,等价于响铃,等价于 aa横向跳一制表符横向跳一制表符换行换行字符字符AA的的ASCIIASCII码,码,与与AA等价等价(4)字符串常量字符串常量:用:用双引号双引号定界,定界,如如”boy”用双引号括起来的部分就是字符串常量,如abc,Hello!,a+b, 123字符串存储时在末尾自动加上0标志字符串的结束。如字符串”abc”为:在内存中占4个字节(而不
15、是3个字节)在存储时,存放字符串中每个字符的ASCII码值。如字符串”abc”为:n注意:注意:1.1.区分字符常量与字符串常量。如:区分字符常量与字符串常量。如:aa只占一个只占一个字节,是字符常量,而字节,是字符常量,而”a”a”占二个字节,是字符串常量。占二个字节,是字符串常量。2.2.没有字符串类型,只有字符类型,字符串要用其他方式没有字符串类型,只有字符类型,字符串要用其他方式定义,例如定义,例如: :字符数组字符数组来存放,见第来存放,见第8 8章数组章数组 3.3.转义字符也转义字符也可以出现在字符串常量中。可以出现在字符串常量中。abc0979899 0n符号常量符号常量用一个
16、符号名代表一个常量,称为符号常量定义:#define 常量标识符常量标识符 常量值常量值 称为宏定义(通常用常量标识符常量标识符)定义符号常量定义符号常量 PI使用符号常量使用符号常量 PI 程序中用程序中用预处理命令预处理命令#define指定指定PI在本程序单位中代表在本程序单位中代表常量常量3.141593,此后凡在本程序单位中出现的,此后凡在本程序单位中出现的PI都代表都代表3.141593,可以和常量一样进行运算。,可以和常量一样进行运算。 请注意:请注意:符号常量的值符号常量的值在其作用域在其作用域(在本例中为主函数在本例中为主函数)内内是是不能改变不能改变的,的,也不能被赋值也不
17、能被赋值。如用赋值语句。如用赋值语句“PI=4;”给给PI赋值是错误的。赋值是错误的。 使用符号常量的好处是:使用符号常量的好处是:(1) 含义清楚。含义清楚。(2) 在需要改变常量值时能做到在需要改变常量值时能做到“一改全改一改全改”。 如如: #define PI 3.1416 注意:注意:常量的习题1.以下所列的C语言常量中,错误的是(B)。 A) 0 xFF ) 1.2e0.5 C) 2L D) 72 2.以下选项中合法的字符常量是(B)。 A)“B” B) 010 C) 68 D) D3.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量1
18、01是()。A) 字符A B)字符aC)字符eD)非法的常量BBA怎样确定程序中常量的类型n字符常量:由单撇号括起来的单个字符单撇号括起来的单个字符或或转义转义字符字符n整型常量:不带小数点的数值系统根据数值的大小确定确定int型型还是还是long型型等n浮点型常量:凡以小数形式或指数形式出现的实数,VC编译系统把浮点型常量都按双精度处理按双精度处理分配8个字节举例:指出程序中出现的常量及其类型举例:指出程序中出现的常量及其类型#include int main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c); r
19、eturn 0; 64.0 、5.0是是double9、32、0是是int字符串常量字符串常量n数据的表示方法:数据的表示方法:在在C C语言中,数据可以用语言中,数据可以用常量常量(常数)、(常数)、变量变量、函数函数、表达式表达式表示。表示。n常量:程序执行过程中,常量:程序执行过程中,值不能改变的。值不能改变的。分为直接分为直接常量和符号常量两类。常量和符号常量两类。直接常量直接常量:直接参与计算:直接参与计算符号常量符号常量:编译前要进行替:编译前要进行替换换常量常量直接常量直接常量符号常量符号常量整型常量整型常量浮点型常量浮点型常量字符常量字符常量字符串常量字符串常量2.4.2 变量
20、n主要内容:变量的定义变量的初始化和赋值变量使用注意事项变量的分类常变量n变量必须变量必须以便给变量分配对应以便给变量分配对应的存储单元的存储单元在在C/C+C/C+语言中,不同类型的变语言中,不同类型的变量占据的内存的大小不同,通过变量定义,计算量占据的内存的大小不同,通过变量定义,计算机可以根据变量的类型确定分配给该变量的内存机可以根据变量的类型确定分配给该变量的内存单元大小。单元大小。例例1:float a,b,c,d,e; /定义定义a,b,c,d,e为单精度型变量为单精度型变量例例2:float a=83.5,b,c=64.5,d=81.2,e; /对变量对变量a,c,d指定了初值,
21、指定了初值,b和和e未指定初值未指定初值 每一个变量都有一个由程序员给出的每一个变量都有一个由程序员给出的,以此识,以此识别每一个变量。别每一个变量。变量的名字必须遵循标识符的命名规变量的名字必须遵循标识符的命名规则则。 每一个变量又具有一个特定的每一个变量又具有一个特定的。 在定义变量时,还可以给这个变量赋一个在定义变量时,还可以给这个变量赋一个(称(称为初始化,不是必须这样作)为初始化,不是必须这样作)int a = 10 ; 说明:是用来定义整型变量a, 执行该语句,会在内存分配四个字节的存储空间,且该空间的名字叫a,然后将数值10写入该存储空间,作为变量a的初始值。nint a =10
22、;n如果没对变量初始化,则该变量的值是一个不可如果没对变量初始化,则该变量的值是一个不可预测的值,即该存储单元中当时的内容是不知道预测的值,即该存储单元中当时的内容是不知道的。的。n可以在定义完变量后,可以在定义完变量后,根据需要根据需要,用,用 = 对变量赋对变量赋值,这样变量就有具体值了。值,这样变量就有具体值了。在定义变量的同时给变量一个初始值在定义变量的同时给变量一个初始值使用 = 为变量赋值。#includevoid main( ) int a , b , c ; a = 5 ; /使用= 为变量赋值 b = 3 ; a = a + b ; /用a+b的和修改a的值 变量要变量要先定
23、义后使用先定义后使用 #includevoid main( ) char ch1,ch2,ch3; /定义了三个字符型的变量,名称为定义了三个字符型的变量,名称为ch1,ch2,ch3 float x,y; /定义了两个单精度型变量,名称为定义了两个单精度型变量,名称为x,y int student; /定义了一个整型变量,名称为定义了一个整型变量,名称为student stadent=19; 程序编译后程序编译后会会出现出现 statent : undeclared identifier 的的错误提示,为什么?错误提示,为什么?这是因为这是因为student被误写被误写stadent,而而s
24、tadent使用前没有使用前没有被定义。被定义。3. 变量使用的注意事项3. 变量使用的注意事项对变量进行初始化时,需要注意的是:对变量进行初始化时,需要注意的是:定义变量时不能连续赋初值。定义变量时不能连续赋初值。例如:例如:int x=1, y=1, z=1 ; 不能写成不能写成 int x = y = z = 1 ;在同一程序块中,变量不能被重复定义。在同一程序块中,变量不能被重复定义。例如:例如:#includevoid main( ) int x , y , z ; float a , b , x ; /变量变量x被重复定义了两次被重复定义了两次3.变量的分类 整整 型型 变变 量量
25、 浮浮 点点 变变 量量 字字 符符 变变 量量例例2-11:整型数据的溢出。:整型数据的溢出。#includevoid main() short x= 32767 , y; y = x + 10 ; printf( x=%d,y=%dn , x , y ) ; 使用变量时要注意使用变量时要注意不能超过其取值范围不能超过其取值范围shortshort:-32768-327683276732767y y 没有得到预期值。没有得到预期值。运行结果:运行结果:对于一个无穷的小数,由于存储空间有限,计算机无法对于一个无穷的小数,由于存储空间有限,计算机无法表示出小数点后面所有的值,只能表示实际值的近似
26、值。表示出小数点后面所有的值,只能表示实际值的近似值。因此,因此,使用实型变量时,可能会有误差使用实型变量时,可能会有误差。实型变量的。实型变量的有效位数越多,与实际值就会越接近,精度就越高。有效位数越多,与实际值就会越接近,精度就越高。例2-12:对比float型数据和double型数据。#includevoid main() float a = 123456789.123456789 ; double b = 123456789.123456789 ; printf( a=%f n , a ) ; printf( b=%f n , b ) ; 运行结果:运行结果: a=123456792.
27、000000 b=123456789.123457有效数字位数:有效数字位数: float : 7 double : 15例例2-14:实型数据的舍入误差。实型数据的舍入误差。#includevoid main( ) float a , b ; a = 123456789.987 ; b = 123456789.345 ; printf( a+2=%fn , a + 2 ) ; printf( a-b=%f n , a - b ) ; 运行结果:运行结果: a+2=123456794.000000 a-b=0.000000a+2=123456791.987000a-b=0.642000doub
28、le a,b;一个字符变量只能放一个字符,在内存中占一个一个字符变量只能放一个字符,在内存中占一个字节,字节,存放的是该字符的存放的是该字符的ASCII码。码。例:例: char c1 = A ;变量变量C1的数值为的数值为41H,是十进制中的,是十进制中的65,在存储器里是,在存储器里是!意味着可以进行计算!意味着可以进行计算0100000101000001变量c1#include #includevoid main() char c1 = A ; /定义字符变量定义字符变量a,初始值为初始值为A,65D c1 = c1 + 1 ; /c1变量值变成变量值变成66D,可以作为可以作为B的的a
29、scii码码 printf(C1:%cn,c1); /输出的是输出的是B c1 = c1 + 32 ; /c1的值变成了的值变成了98,98可以作为可以作为b的的ascii码码 printf(C1:%cn,c1); /输出的是输出的是b / printf(%c%cn,231,252); #include int main() char a=T, b; b=to; c=K; printf(c+%c,%c,%c,a,b,c); return 0;练习练习1. 1. 阅读程序,指出程序中的错误阅读程序,指出程序中的错误#include int main() int a=10 , b, c; b=-1
30、7; c=a+b; b=c-b; printf(“%d,%d,%dn”,a,b,c); return 0;练习练习2.阅读程序,指出程序中阅读程序,指出程序中1. 哪条语句是变量的定义2. 哪些变量进行了初始化3. 变量的数据类型是什么4. 变量所占用的存储空间是多大?5. 每个存储空间最终的值是多少?1. int a=10 , b, c; 定义变量的语句2. 定义a的时候给了一个值,因此只有变量a进行了初始化3. 所有变量都是int4. 所有变量都占用4个字节的空间5. a存储空间的值为10,b存储空间的值为10,c存储空间的值为-7,总结: 变量与常量的区别n在程序中出现的数据,可以以常量
31、的形式出现,在程序中出现的数据,可以以常量的形式出现,也可以以变量的形式出现。也可以以变量的形式出现。常量:在程序执行期间,值不会发生改变常量:在程序执行期间,值不会发生改变变量:在程序执行期间,值可以改变。变量:在程序执行期间,值可以改变。除了符号常量,其他常量不需要定义,直接使用除了符号常量,其他常量不需要定义,直接使用。变量要先定义后使用。变量要先定义后使用。例如:例如: 有人用温度计测量出用华氏法表示的有人用温度计测量出用华氏法表示的温度温度 (如如 F),今要求把它转换为以摄氏法表示的温度,今要求把它转换为以摄氏法表示的温度(如如 C) 1.请问请问 本任务涉及到哪些数据本任务涉及到
32、哪些数据2.这些数据哪些是已知部分,哪些是需要求取的部分?这些数据哪些是已知部分,哪些是需要求取的部分?3.这些数据哪些应该被看作常量,哪些应该定义为变量。这些数据哪些应该被看作常量,哪些应该定义为变量。)32(95fc转换公式:转换公式:回答:回答:1. 本任务涉及本任务涉及到:华氏温度值、摄氏温度值、还有到:华氏温度值、摄氏温度值、还有公式里面公式里面的一些数据:的一些数据:5、9、32等等2. 要转换的华氏温度值以及公式中的要转换的华氏温度值以及公式中的5,9,32是已知部分,是已知部分,其摄氏温度值是要用公式计算的部分其摄氏温度值是要用公式计算的部分 3. 要计算的部分一定要定义成变量
33、,值待定;其他的可以定要计算的部分一定要定义成变量,值待定;其他的可以定义为常量也可以定义为变量。义为常量也可以定义为变量。例如:例如: 有人用温度计测量出用华氏法表示的有人用温度计测量出用华氏法表示的温度温度 (如如 F),今要求把它转换为以摄氏法表示的温度,今要求把它转换为以摄氏法表示的温度(如如 C) 算法:算法:提供 f 的值输出c的值)32(95fc1.定义变量定义变量 f ,用来存放用来存放 华氏华氏 温度值温度值2.定义定义变量变量 c ,存放未知存放未知的的 摄氏摄氏 温度温度值值请问请问f、c 应该定义成什么类型?应该定义成什么类型?浮点型!浮点型!#include int
34、main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c); return 0; 定义定义f和和c为单精度浮点型变量为单精度浮点型变量指定指定f的值的值计算计算c的值的值输出输出f和和c的的值值思考:思考:任意给定一个任意给定一个f值,输出值,输出c的值的值scanf(%f,&f); 例如:例如: 有人用温度计测量出用华氏法表示的有人用温度计测量出用华氏法表示的温度温度 (如如 F),今要求把它转换为以摄氏法表示的温度,今要求把它转换为以摄氏法表示的温度(如如 C) 例:求一个梯形的面积例:求一个梯形的面积1.请问请
35、问 本任务涉及到哪些数据本任务涉及到哪些数据2.这些数据哪些是已知部分,哪些是需要求取的部分?这些数据哪些是已知部分,哪些是需要求取的部分?3.这些数据哪些应该被看作常量,哪些应该定义为变量。这些数据哪些应该被看作常量,哪些应该定义为变量。1.上、下边长和高上、下边长和高 ,以及面积,以及面积2.上、下边长和高是上、下边长和高是已知部分,已知部分,面积面积是需要求取的部分?是需要求取的部分?3. 面积定义成变量,面积定义成变量,上、下边长和高可以定义成常量或变量。上、下边长和高可以定义成常量或变量。/求求上、下上、下边长为边长为10,20,高为,高为8的梯形面积的梯形面积/面积定义为单精度浮点
36、类型面积定义为单精度浮点类型的变量的变量#include void main()float s;s=(10+20)*8/2;printf(area : %f n,s); 缺点:把上、下边长作为常量,该程序就只能适缺点:把上、下边长作为常量,该程序就只能适应一种情况应一种情况/求上下边长为求上下边长为10,20,高为,高为8的梯形面积的梯形面积/将上、下边长和高定义为变量将上、下边长和高定义为变量/面积定义为单精度浮点类型的变量面积定义为单精度浮点类型的变量#include void main()float a,b,h,s;a=10; b=20; h=8;s=(a+b)*h/2;printf(a
37、rea : %f n,s); 缺点:虽然定义为变量,但是用缺点:虽然定义为变量,但是用=提供数据,该程提供数据,该程序仍然只能适应一种情况,但是可以有余地修改序仍然只能适应一种情况,但是可以有余地修改提供数据的方式。提供数据的方式。2.3 运算符(便于回忆总结的目录)n2.3.1 算术运算符n2.3.2 自加、自减运算符n2.3.3 赋值运算符n2.3.4 逗号运算符n2.3.5 位运算符n2.3.7 求字节数运算符2.3 运算符和表达式算术运算符算术运算符+ - * / % + -关系运算符关系运算符 = = !=逻辑运算符逻辑运算符! & |位运算符位运算符 | & 赋值运算符赋值运算符=
38、 及扩展的复合运算符及扩展的复合运算符条件运算符条件运算符? :逗号运算符逗号运算符,指针运算符指针运算符* &求字节运算符求字节运算符sizeof强制类型转换符强制类型转换符类型类型成员运算符成员运算符. -下标运算符下标运算符其他其他( ) : new deleten运算符是以简洁的方式表达对数据操作的符号(运算符是以简洁的方式表达对数据操作的符号(书书324324页页)nC C的运算符十分丰富,运算十分灵活方便。的运算符十分丰富,运算十分灵活方便。2.5.1 常见的算术运算符+加法,或单目求正加法,或单目求正减法,或单目求负减法,或单目求负*乘法乘法/除法除法%求模求模( (求余求余)
39、) 优先级:优先级: -* / % - + (2) (3) (4) (2) (3) (4) 结合结合方向方向:级别相同,从级别相同,从左左向右向右说明:说明:“- -”可为可为单目单目运算符时运算符时, ,右结合性右结合性 两整数相除,结果为整数,如果有一个是浮两整数相除,结果为整数,如果有一个是浮点数,运算结果为浮点数。点数,运算结果为浮点数。 % %要求两侧均为整型数据要求两侧均为整型数据例例 5/2 = -5/2.0 =例例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例例 5/2 = 2 -5/2.0 = -2.5例例 5%2 = 1 -5%2 = -1 1%10 =
40、 1 5%1 = 0 5.5%2 ( )2.3.2 2.3.2 自加、自加、自减运算符自减运算符 + + -作用:使变量值加作用:使变量值加1 1或减或减1 1种类:种类:n前置前置 +i, -i (+i, -i (先执行先执行i i+1+1或或i-1i-1,再使用再使用i i值)值)n后置后置 i+,i- (i+,i- (先使用先使用i i值值, ,再执行再执行i i+1+1或或i-1i-1)例例 j = 3; k = + j ; j = 3; k = j+ ; j = 3; printf(“%d”,+j) ; j = 3; printf(“%d”,j+); a = 3; b=5; c=(+
41、a)*b; a = 3; b=5; c=(a+)*b; /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4n 自加、自加、自减运算符自减运算符 + + -p 说明说明:n + - + - 不能用于常量和不能用于常量和表达式表达式,如如5+5+,( (a+b)+a+b)+n + -+ -结合方向:结合方向: 自右向左自右向左n 优先级优先级:- + - - + - - * * / % / % - + + - - ( (2) 2) (3) (3) (4)(4)例例 - -i+ i+ -(i+) -(i+) i=3; printf(“%d”,-i+); i=3; print
42、f(“%d”,-i+); /-3/-3 例例 j+k; (j+)+k;j+k; (j+)+k;例例 - -i+i+ i=3; printf(“%d”,-i+); i=3; printf(“%d”,-i+); 以下程序的功能是:以下程序的功能是:将值为三将值为三位正整数的位正整数的变量变量 x 中中的的数值按照数值按照个位、十位、百位个位、十位、百位的顺序拆分并输出。请填空。的顺序拆分并输出。请填空。l运算符的应用举例运算符的应用举例 1#include void main() int x = 256 ; printf(%d-%d-%dn, 【】【】 ,x/10%10,x/100); 个位个位、
43、 十位、十位、 百百位位答案答案: x%10答案答案2:个位个位: x%10十位十位: (x/10)%10百位百位: (x/100)%10千位千位: x/1000答案答案3:个位个位: x%10十位十位: (x%100) /10百位百位: (x%1000) /100千位千位: x/1000四位整数拆分?四位整数拆分?l运算符的应用举例运算符的应用举例 2#includevoid main( ) int i=5; printf(“%dn”,+i); / 前置,输出6 printf(%dn,-i); /前置,输出5 printf(“%dn”,i+); /后置,输出5,但i的值为6 printf(“
44、%dn”,i-); /后置,输出6,但i的值为5 printf(%dn,-i+); /后置,输出-5,但i的值为6 printf(“%dn”,-i-); /后置,输出-6,相当于-(i-) printf(%dn,i); /输出5例例 :自增自减自增自减运算符运算符的的综合综合应用。应用。5变量 i C C语言的算术表达式语言的算术表达式: :用算术运算符连接起来用算术运算符连接起来的式子,的式子,C C语言表达式的写法与普通数学式子有语言表达式的写法与普通数学式子有区别,要求区别,要求写在一行内写在一行内,如:d)b)/(c(adcban 在写复杂的算术表达式时,应遵循在写复杂的算术表达式时,
45、应遵循“从整体到局从整体到局部部”、“由粗到细由粗到细”的原则的原则n 在表达式中在表达式中只能用圆括号改变优先级,只能用圆括号改变优先级,圆括号可圆括号可以嵌套使用以嵌套使用l运算符的使用注意:运算符的使用注意:C语言的表达式和数学表达式之不同语言的表达式和数学表达式之不同xxxxcossincossinln21gfedcba 在表达式中在表达式中只能用圆括号,只能用圆括号,圆括号可以嵌套使用圆括号可以嵌套使用求实数的求实数的绝对值绝对值l运算符的使用举例运算符的使用举例 :写出下列数学式的写出下列数学式的C C语言表达式语言表达式在在C语言中语言中没有没有乘幂运算符乘幂运算符使用使用数学函
46、数数学函数计算计算 xy :见书:见书326页附录页附录l运算符的使用运算符的使用 之之 求乘幂求乘幂2.3.3 赋值运算符n赋值运算符和表达式赋值运算符和表达式1.1. 简单赋值运算符简单赋值运算符n符号:符号: = =n语法格式:语法格式: 变量标识符变量标识符 = = 表达式表达式n作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量例 a = 3 ; c = a + 2 ;n优先级:优先级: 1414级级 低于低于算术运算符算术运算符n结合方向:结合方向:自右自右向左向左n= =号号 左侧左侧必须是变量,不能是常量或必须是变量,不能是常量或表达式表达
47、式2.3.3 赋值运算符n赋值运算符和表达式赋值运算符和表达式2.2. 复合赋值运算符复合赋值运算符n种类种类:+= -= *= /= %= = = &= = |=n含义含义: exp1 op = exp2 等价于等价于 exp1 = exp1 op (exp2)a += 3a = a + 3x *= y + 8x = x * ( y + 8 )x %= 3x = x % 3E1 OP = E2:可以写成:可以写成 E1= E1 OP (E2)把复合赋值语句改写成普通赋值语句:把复合赋值语句改写成普通赋值语句:将将E2用用( )括起来括起来 : E1 OP=(E2)将将E1 OP移动到移动到=
48、的右边的右边:=E1 OP(E2)在在=左边补变量名左边补变量名 E1= E1OP(E2)注:注:E1是变量名,是变量名,E2是一个表达式是一个表达式。复合赋值语句的优点:运算效率高复合赋值语句的优点:运算效率高不要求初学者写出这种表达式,但是要不要求初学者写出这种表达式,但是要求能看懂它求能看懂它。少出错为原则!。少出错为原则!l复合赋值运算符复合赋值运算符 转换总结转换总结n在表达式中常遇到不同类型数据之间进行运算,在进行运算前,不同类型的数据要先转换成同一类型,然后进行运算。 1. 自动转换:转换的规则(见图2-9)规律:规律:低精度向高精度低精度向高精度转换,占用字节少的向转换,占用字
49、节少的向占用字节数多的转换占用字节数多的转换2.3.4 数据类型的转换long doubledoublefloatintshort、charlong定义:int i; float f; double d; long e; 式子:10+a+ i*f - d/e 运算次序及结果类型为: 进行10+a的运算,先将a转换成整数97,运算结果为107。 进行i*f的运算。先将i转换成float型,运算结果为float型。整数107与i*f的积相加。先将整数107转换成float(小数点后加若干个0,即107.00000),结果为float型。将变量e转换成double型,d/e结果为double型。将1
50、0+a+i*f的结果转换成double型,与d/e的商相减,结果为double型。上述的类型转换是由系统自动进行的,设计人员了上述的类型转换是由系统自动进行的,设计人员了解即可解即可。2.强制类型转换强制类型转换运算符运算符n在表达式中在表达式中不同类型的数据会自动地转换类型不同类型的数据会自动地转换类型,以进行,以进行运算。有时程序编制者还可以运算。有时程序编制者还可以利用强制类型转换运算符利用强制类型转换运算符将一个表达式的值转换成所需类型将一个表达式的值转换成所需类型。n 用类型符对表达式值转换成所需类型用类型符对表达式值转换成所需类型,一般形式为一般形式为:(类型类型)(表达式表达式)例如:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年5月湖北事业单位联考A类综合应用能力试题及答案
- 支护锚喷工岗前操作管理考核试卷含答案
- 甲酸燃料电池竖琴状流场结构优化及性能影响研究
- 聚氯乙烯装置操作工班组评比考核试卷含答案
- NRDS危险因素分析及血清IL-6、LDH在NRDS预后中的预测价值
- 联碱结晶工6S执行考核试卷含答案
- 充填回收工岗前操作评估考核试卷含答案
- 室温硫化硅橡胶生产工安全文化考核试卷含答案
- 2025年U型荧光灯管合作协议书
- 温州市水上搜救志愿者队伍参与水上应急搜救的现状、困境与对策研究
- 小学生英语水果课件下载
- 湖北省老年教育管理办法
- 人教新版(PEP)四年级上册单元测试卷 Unit1 Helping at home (含听力音频听力原文及答案)
- DGTJ08-66-2016 花坛花境技术规程
- DB42∕T 2305-2024 高品质住宅技术标准
- 法律明白人课件
- 洗衣房衣物洗涤操作规范
- 国家基本公共卫生服务项目健康教育培训试题附答案
- 石材安装采购合同协议
- “双重预防体系”建设培训课件
- 2025年03月四川天府新区“蓉漂人才荟”事业单位(13人)笔试历年典型考题(历年真题考点)解题思路附带答案详解
评论
0/150
提交评论