第2章 基本数据类型及运算_第1页
第2章 基本数据类型及运算_第2页
第2章 基本数据类型及运算_第3页
第2章 基本数据类型及运算_第4页
第2章 基本数据类型及运算_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、开开 始始编编 辑辑编编 译译有错?有错?链链 接接执执 行行结果正确?结果正确?结结 束束源程序源程序file.c目标程序目标程序file.obj库函数和其库函数和其它目标程序它目标程序可执行程可执行程序序file.exe不正确不正确正确正确有有无无 。数据类型名数据类型名定义的变量名,以定义的变量名,以“,”分隔分隔两个赋值语句,使两个赋值语句,使a a和和b b的值分别为的值分别为1212和和34 34 调用内部函数,输出计算的和数调用内部函数,输出计算的和数求和的值给求和的值给sum 46“%d%d”是输入输出的格式字符串,用来是输入输出的格式字符串,用来指定输入输出时的数据类型和格式

2、指定输入输出时的数据类型和格式 由前得出一般由前得出一般C语言程序的构成如下语言程序的构成如下:int main() /*主函数主函数*/ 变量定义部分;变量定义部分; 变量赋初值部分;变量赋初值部分; 语句执行部分;语句执行部分; return 0;第第2 2章章 基本数据类型及运算基本数据类型及运算本章要点本章要点:常量和变量常量和变量基本数据类型基本数据类型格式化输入与输出函数格式化输入与输出函数常用运算符及表达式常用运算符及表达式运算符的优先级及结合性运算符的优先级及结合性本章难点本章难点:不同类型数据间的混合运算不同类型数据间的混合运算运算符的优先级运算符的优先级自增自增(+)自减自

3、减(-)运算符的使用运算符的使用2.1 数据类型数据类型2.2 2.2 常量与变量常量与变量 1.1.常量常量 定义:定义:程序运行时其值不能改变的量(即常数)程序运行时其值不能改变的量(即常数) 常量的分类常量的分类 :直接常量直接常量( ( 值常量值常量) ) 整型常量整型常量 如,如,15、0、-7 浮点型常量浮点型常量 如,如,5.0、-13.36 字符型常量字符型常量 如,如,A、a 指针常量指针常量 如,如,NULL 字符串常量字符串常量 如,如,”ABC”符号常量符号常量 用标识符来代表常量。用标识符来代表常量。 其定义格式为:其定义格式为: # # #define NUM 20

4、 #define PI 3.1415926 运行结果:运行结果:area=314.000000 字符串常量字符串常量1.定义:括在一对定义:括在一对双引号双引号之内的字符序列或转义字符之内的字符序列或转义字符序列称为字符串常量。序列称为字符串常量。 例如:例如:“How are you!” “a” “*abcnt”2.存储:字符串中的字符依次存储在内存中一块连续存储:字符串中的字符依次存储在内存中一块连续的区域内,并且把空操作字符的区域内,并且把空操作字符 0自动附自动附加到字符串的尾部作为字符串的结束标志。加到字符串的尾部作为字符串的结束标志。故字符个数为故字符个数为n的字符串在内存中应占的

5、字符串在内存中应占n+1个字节。个字节。 例:例:c=“china” c h i n a 0注意:注意: a是字符常量,是字符常量, “a”是字符串常量,二者不同。是字符串常量,二者不同。前者只占一个字节的存储空间,后者占两个字节的存前者只占一个字节的存储空间,后者占两个字节的存储空间,分别存放字符储空间,分别存放字符a和字符串结束标志和字符串结束标志0。 字符串常量中包含转义字符时,一定要注意其字符串常量中包含转义字符时,一定要注意其 长度长度的计算。例如字符串的计算。例如字符串 “*abcnt”的长度为的长度为6,所占空,所占空间为间为7。 在写字符串时不必加在写字符串时不必加0,字符,字

6、符0是系统自动加是系统自动加上的。上的。 2.2.变量变量 定义:定义:程序运行时其值可以被改变的量程序运行时其值可以被改变的量 变量的三要素变量的三要素 :变量名变量名 、变量值、变量的存储单元、变量值、变量的存储单元 变量的使用:变量的使用:先先定义定义,后使用,后使用 例例:变量的定义和赋值:变量的定义和赋值int x, y, z;float radius, length; char ch;例: int a = 2, b, c = 4; float data = 3.67; char ch = A; int x = 1, y = 1, z = 1; int x = y = z = 1;C

7、语言规定变量的定义形式为语言规定变量的定义形式为:数据类型数据类型 变量名变量名=初值初值, 变量名变量名=初值初值,;在在C C语言中,语言中,变量必须强制定义变量必须强制定义,其目的是:,其目的是:1、凡未被事先定义的,不作为变量名。、凡未被事先定义的,不作为变量名。2、每一个变量被指定为一确定的类型,在编译时就能为、每一个变量被指定为一确定的类型,在编译时就能为 其分配相应的存储单元。其分配相应的存储单元。3、指定每一个变量为一确定的类型,在编译时据此检查、指定每一个变量为一确定的类型,在编译时据此检查 该变量所进行的运算是否合法。该变量所进行的运算是否合法。 选变量名时,要做到选变量名

8、时,要做到“见名知意见名知意” 例如:例如:name st_age xm nl class sum 大小写字母是两个不同的字符,大小写字母是两个不同的字符,C变量名习惯用变量名习惯用小写小写 字母表示。字母表示。 建议变量名的长度不要超过建议变量名的长度不要超过255个字符。个字符。注意注意: :变量赋初值 程序中常需要对一些变量预先赋初值,通常有以下两种方法。程序中常需要对一些变量预先赋初值,通常有以下两种方法。(1)先定义一个变量,然后再给它赋一个值,如:)先定义一个变量,然后再给它赋一个值,如: int a; a = 10;(2)在定义变量的同时就对变量赋初值,又称为变量初始化,)在定义

9、变量的同时就对变量赋初值,又称为变量初始化,如:如: char ch = a;float b = 1.234;int x, i=10; /* 部分变量赋初值,即对部分变量赋初值,即对i赋初值赋初值10 */2.3 格式化输入与输出函数格式化输入与输出函数C语言本身不提供输入输出语句,而是由语言本身不提供输入输出语句,而是由C函函数库中的函数来实现的,在数库中的函数来实现的,在C标准函数库中标准函数库中包含的常用输入输出函数有:格式输出函数包含的常用输入输出函数有:格式输出函数printf()、格式输入函数、格式输入函数scanf()、单个字符输、单个字符输出函数出函数putchar()和单个字

10、符输入函数和单个字符输入函数getchar()等。等。 2.3.1 printf函数函数 字符形式字符形式含含 义义ASCIIASCII代码代码nn换行,将当前位置移到下一行开头换行,将当前位置移到下一行开头1010tt横向跳格(即跳到下一个输出区,一横向跳格(即跳到下一个输出区,一个输出区占个输出区占8 8列)列)9 9bb退格,将当前位置移到前一列退格,将当前位置移到前一列8 8rrEnterEnter,将当前位置移到本行开头,将当前位置移到本行开头1313ff换页,将当前位置多到下页开头换页,将当前位置多到下页开头1212反斜杠字符反斜杠字符“ ”9292 单引号字符单引号字符3939

11、”双引号字符双引号字符3434 dddddd1 1到到3 3位位8 8进制数所代表的字符进制数所代表的字符 xhhxhh1 1到到2 2位位1616进制数所代表的字符进制数所代表的字符【例例1】 转义字符的使用转义字符的使用int main( )char a,b,c;a=n;b=e;c=167; /* 8进制数进制数167代表的字符代表的字符w */printf(“%c%c%cn”,a,b,c); /* 以字符格式输出以字符格式输出 */printf(“%ct%ct%cn”,a,b,c); /* 每输出一个字符跳到下一输每输出一个字符跳到下一输出区出区 */printf(“%cn%cn%cn”

12、,a,b,c); /* 每输出一个字符后换行每输出一个字符后换行 */return 0;运行结果如下:运行结果如下: new new “”代表空格代表空格,下同下同 n e w2. printf函数的调用函数的调用 格式控制用于指定输出参数的输出格式,格式控格式控制用于指定输出参数的输出格式,格式控制由两部分组成:制由两部分组成:格式说明格式说明和和普通字符普通字符。普通字符。普通字符(包括转义字符)将被简单地复制显示(或执行)。(包括转义字符)将被简单地复制显示(或执行)。一个格式说明项将引起输出参数项的转换与显示。一个格式说明项将引起输出参数项的转换与显示。例如例如:main( ) int

13、 a=3,b=4; printf(“a=%db=%dn”,a,b);输出结果为:输出结果为: a=3b=4【例例2】int main( )char ch1=a,ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); return 0;程序运行结果为:?程序运行结果为:? 3. 格式字符串格式字符串printf函数格式字符串一般形式为:函数格式字符串一般形式为:% %m.nh/l格式字符格式字符 开始开始符符 标志字标志字符符 宽度指示宽度指示符符 精度指示精度指示符符 长度修正长度修正符符 格式转换字

14、格式转换字符符 说明:说明: 格式字符格式字符:格式字符用来表示输出数据的类型,在格式控制字符串不能:格式字符用来表示输出数据的类型,在格式控制字符串不能略,其常用符号和含义参见表略,其常用符号和含义参见表2-3 标志字符标志字符:标志字符包括:标志字符包括-、+、#三种,具体含义参见表三种,具体含义参见表2-4。 宽度指标符宽度指标符:用来设置输出数据项的最小宽度,通常用十进制整数来表:用来设置输出数据项的最小宽度,通常用十进制整数来表示输出的位数。如果输出数据项所需实际位数多于指定宽度,则按实际位数示输出的位数。如果输出数据项所需实际位数多于指定宽度,则按实际位数输出,如果实际位数少于指定

15、的宽度则用空格填补。输出,如果实际位数少于指定的宽度则用空格填补。 精度指示符精度指示符:以:以“.”开头,用十进制整数指精度。对于开头,用十进制整数指精度。对于float或或double类类型的浮点数可以用型的浮点数可以用“m.n”的形式在指定宽度的同时来指定其精度。其中,的形式在指定宽度的同时来指定其精度。其中,“m”用以指定输出数据所占总的宽度,用以指定输出数据所占总的宽度,“n”称为精度。称为精度。 长度修正符长度修正符:常用的长度修改符为:常用的长度修改符为h和和l两种,两种,h表示输出项按短整型输出,表示输出项按短整型输出,l表示输出项按长整型输出。表示输出项按长整型输出。 输出语

16、句输出语句输出结果输出结果printfprintf( (“%dn%dn”,888);,888);888888(按实际需要宽度输出)(按实际需要宽度输出)printf(printf(“%6dn%6dn”,888);,888);888888(输出右对齐,(输出右对齐,左边填空格)左边填空格)printf(printf(“%fn%fn”,888.88);,888.88);888.880000888.880000(按实际需要宽(按实际需要宽度输出)度输出)printfprintf( (“%12fn%12fn”,888.88);,888.88); 888.880000888.880000(输出右对(输出

17、右对齐,左边填空格)齐,左边填空格)printfprintf( (“%8.3fn%8.3fn”,888.88);,888.88);888.880888.880例如,以下语句输出六位十进制整数:例如,以下语句输出六位十进制整数: printf(“%6dn”,111); printf(“%-6dn”,111);输出结果为:输出结果为: 111 (输出右对齐,左边填空格)(输出右对齐,左边填空格) 111 (输出左对齐,右边填空格)(输出左对齐,右边填空格)例如,语句例如,语句printf(“%+d,%+dn”,111,-111);输出结果为:输出结果为: +111,-111输出八进制或十六进制时,

18、可以使用以下形式:输出八进制或十六进制时,可以使用以下形式: printf(“%#o,%#xn”,10,16);输出结果为:输出结果为:012,0 x10【例例3】 输出形式举例输出形式举例int main( ) int num1=123; float real=123.4567; printf(“%d,%6d,%-6d,%2dn”,num1,num1,num1,num1);printf(“%f,%10f,%10.2f,%-10.2fn”,real,real,real,real); return 0;输出结果如下:输出结果如下:123,123,123,123123.456700,123.456

19、700,123.46,123.46 2.3.2 2.3.2 格式化输入格式化输入scanfscanf 取地址运算符取地址运算符(与按与按位位“与与”同符号同符号),只,只能作用于变量!能作用于变量! 例例4:#include int main( )int a,b,s;scanf(%d%d,&a,&b);s=a+b;printf(%d+%d=%dn,a,b,s); return 0;用“%d%d”格式输入数据时,不能用逗号作为两个数据的分隔符,如下面的输入不合法:1,2使用scanf()函数时应注意的问题(1)scanf()函数地址列表中的各个参量都是变量地址,而不是变量名。(2)在“格式控制字

20、符串”中除了格式说明以外还有其他字符,则输入数据时在对应位置应输入与这些字符相同的字符。 (3)在用“%c”格式输入字符时,空格字符和转义字符都将作为有效的字符输入。 (4)在输入数据时,若遇到下列情况,则认为输入数据结束:输入数据结束的各种情况:输入数据结束的各种情况: 遇到空格、换行符、制表符(遇到空格、换行符、制表符(tab) 遇到给定的宽度结束遇到给定的宽度结束例如:例如:scanf(“%2d”,&i); 如果输入:如果输入:1234567 i的值为的值为12。 遇到非法字符输入遇到非法字符输入例如:例如:scanf(“%d%c%f”,&i,&c1,&f1);如果输入:如果输入:123

21、x23o.4567结果是?结果是?2.4 整型数据整型数据 类别类别类型说明符类型说明符 内存中所占字节内存中所占字节 基本型基本型int 4个字节个字节短整型短整型short int或或short 2个字节个字节长整型长整型 long int或或long 4个字节个字节无无符符号号型型无符号基本型无符号基本型 unsigned int或或unsigned 无符号短整型无符号短整型 unsigned short 无符号长整型无符号长整型 unsigned long 整型变量的分类整型变量的分类 变量的说明,也即变量的定义,一般形式为:变量的说明,也即变量的定义,一般形式为: 类型说明符类型说明

22、符 变量名标识符变量名标识符1,变量名标识符,变量名标识符2,.; 例如:例如: int a,b,c; /* a,b,c为整型变量为整型变量*/ long m,n; /* m,n为长整型变量为长整型变量*/ unsigned p,q; /* p,q为无符号整型变量为无符号整型变量*/在书写变量说明时,应注意以下几点:在书写变量说明时,应注意以下几点: 允许在一个类型说明符后,说明多个相同类型的变量。各变量允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。间隔。 最后一个变量名之

23、后必须以最后一个变量名之后必须以“;”号结尾。号结尾。 变量说明必须放在变量使用之前。变量说明必须放在变量使用之前。 也可在说明变量为整型的同时,给出变量的初值。其格式为:也可在说明变量为整型的同时,给出变量的初值。其格式为:类型说明符类型说明符 变量名标识符变量名标识符1=初值初值1,变量名标识符,变量名标识符2=初值初值2,.; 整型变量的说明整型变量的说明【例例5】 int main( ) int a=3,b=5; printf(“a+b=%dn”,a+b); return 0; 程序的运行结果为:程序的运行结果为:a+b=8 上周回顾上周回顾 C程序的一般结构、特点和运行步骤程序的一般

24、结构、特点和运行步骤 基本数据类型基本数据类型int、float、double、char 常量:值常量和符号常量常量:值常量和符号常量 变量变量 格式化输入输出函数:格式化输入输出函数:printf和和scanf 整型数据:整型常量和整型变量整型数据:整型常量和整型变量 实型实型数据:实数据:实型型常量常量和实型和实型变量变量 如如 a A ? n 101如如 A65, a97, 048 , n10转义字符及其含义:转义字符及其含义:转义字符转义字符含义含义nvradddtbf“xhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号1-3位位8进制数代表的字符进制数

25、代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号1-2位位16进制数代表的字符进制数代表的字符如如 101 -A 012 -n 376 - x61 -a 60 -0 483 -( )例例:A-101-x41-65 注意:注意: 字符常量首尾的字符常量首尾的单引号是定界符单引号是定界符,不占存储空间。,不占存储空间。 在在C语言中,语言中,a和和a是不同的是不同的。前者代表字符。前者代表字符常量,后者代表一个标识符。常量,后者代表一个标识符。 a和和A是不同的字符常量。前者存储的是小是不同的字符常量。前者存储的是小写字母写字母a的的ASCII码值为码值为97,后者存储的是大写,

26、后者存储的是大写字母字母A的的ASCII码值为码值为65。 转义字符代表一个字符,在内存中只占一个字节转义字符代表一个字符,在内存中只占一个字节的存储空间。的存储空间。 转义字符转义字符0就是就是ASCII码值为码值为0的字符,的字符,常用常用于表示字符串结束的标志符于表示字符串结束的标志符。字符型变量字符型变量 字符型数据类型符是字符型数据类型符是charchar(字符(字符charactercharacter) 在内存中占在内存中占1 1个字节(个字节(8 8位)位) 字符变量存放字符字符变量存放字符ASCIIASCII码码 charchar与与intint数据间可数据间可进行进行转换和转

27、换和算术运算算术运算 字符型数据既可以以字符型输出,也可以以整数字符型数据既可以以字符型输出,也可以以整数形式输出形式输出 int main() char c1,c2; c1=97;c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2);return 0;输出结果:输出结果:a b97 98int main() int i; char c; i=a; c=97; printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);return 0;输出结果:输出结果:a, 97a, 972.8 数据类型转换数据类型转换 1.

28、1. 自动转换自动转换( (隐式转换隐式转换) ) 自动转换发生在不同数据类型混合运算时,自动转换发生在不同数据类型混合运算时,由编译系统自动完成。用下例来具体说明数由编译系统自动完成。用下例来具体说明数据类型的转换据类型的转换。 int m; float n; double b,d; long e; 计算计算m*n+b+24-d/e C C语言的执行和其它语言一样,从左到右进语言的执行和其它语言一样,从左到右进行扫描:见下页图行扫描:见下页图. .在隐式类型转换中有如下规则:(1)如参与运算的运算量的类型不同,则先转换成同一类型,然后进行运算。(2)转换按数据长度增加的方向进行,以保证不降低

29、精度。如int型和long型运算时,先把int型转换成long型后再计算。(3)所有的浮点运算都是以双精度进行的,即使仅含有float(单精度)型运算的表达式,也要先转换成double型,再作运算。(4)char型和short型参与运算时,将其先转换成int型。(5)在赋值运算中,赋值运算符两边的数据类型不同时,赋值运算符右边量的类型先转换成左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这会降低精度,丢失的部分按四舍五入向前舍入。(6)下图直观地解释了隐式类型转换的规则。图中的横向箭头表示必定转换,纵向箭头表示当运算对象为不同类型时转换的方向。floatchar,shor

30、t int double long级别低级别低级别高级别高图图1 不同数据类型自动转换不同数据类型自动转换 2. 2. 强制类型转换强制类型转换C C语言提供了强制类型转换运算符来实现强制类型转换。语言提供了强制类型转换运算符来实现强制类型转换。 格式:格式: ( (类型类型) )表达式表达式 例如例如: ( (intint) )3.53.5注意:注意:在进行类型转换时,操作数的值并不发生改变,改变在进行类型转换时,操作数的值并不发生改变,改变的只是表达式值的类型。的只是表达式值的类型。例如:例如:float x=3.5;i=(int)x;float x=3.5;i=(int)x; / /*

31、* i i的值为的值为3 3* */ /使用强制转换类型得到的是一个所需类型的中间量,原表达使用强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,式类型并不发生变化。例如,(double)a(double)a只是将变量只是将变量a a的值的值转换成一个转换成一个doubledouble型的中间量,其数据类型并未转换成型的中间量,其数据类型并未转换成doubledouble型。型。(int)(x+y);(int)(x+y); / /* * 将将x+yx+y的值转换为的值转换为intint类型类型 * */ /(int)x+y;(int)x+y; / /* * 将将x x的

32、值转换为的值转换为intint类型类型, ,再与再与y y相加相加 * */ /1 1、基本算术运算符:、基本算术运算符: + + - - * * / % / % 结合方向:从左向右结合方向:从左向右 优先级:优先级: - - - -* * / % / % - - + -+ -说明:说明: “+ +”、“- -”可为可为单目单目运算符时运算符时, ,右结合性右结合性 两整数相除,结果为整数两整数相除,结果为整数 % %要求两侧均为整型数据要求两侧均为整型数据,符号与,符号与被除数被除数相同(相同(VC+6.0VC+6.0) 35-102.9 算术运算符和表达式算术运算符和表达式 算术运算符算术

33、运算符+ - * / % 例:例:5.0/10 11%35/10 -11%310/4 2%-52. 2. 算术表达式算术表达式 算术表达式是指用算术运算符和括号将运算对象算术表达式是指用算术运算符和括号将运算对象(也也称操作数,如常量、变量、函数等称操作数,如常量、变量、函数等)连接起来、符合连接起来、符合C语法语法规则的式子,如:规则的式子,如: a*b/c-1.5+a 在算术表达式中,运算对象可以是各种类型的数据,包括在算术表达式中,运算对象可以是各种类型的数据,包括整型、实型或字符型的常量、变量及函数调用。整型、实型或字符型的常量、变量及函数调用。3.3.算术运算符的优先级、结合性算术运

34、算符的优先级、结合性 在在5个算术运算符中,个算术运算符中,*、/和和%的优先级相同且高于的优先级相同且高于+、-。 当运算符的优先级相同的情况下,这当运算符的优先级相同的情况下,这5个运算符的结合方向个运算符的结合方向为从左至右为从左至右(先左后右,简称左结合先左后右,简称左结合)。例:。例: a - b + c 由于算术运算符为左结合,故先执行由于算术运算符为左结合,故先执行a-b,再执行加,再执行加c的运算。的运算。 C语言运算符的优先级与结合性语言运算符的优先级与结合性 C C的运算符有以下几类。的运算符有以下几类。(1)算术运算符算术运算符 ( + - * / %)(2)关系运算符关

35、系运算符 ( = = !=)(3)逻辑运算符逻辑运算符 (! |)(4)位运算符位运算符 ( | &)(5)赋值运算符赋值运算符 (= 及其扩展赋值运算符及其扩展赋值运算符)(6)条件运算符条件运算符 (? :)(7)逗号运算符逗号运算符 (,)(8)指针运算符指针运算符 (* 和和 &)(9)求字节数运算符求字节数运算符 (sizeof)(10)强制类型转换运算符强制类型转换运算符 (类型类型)(11)分量运算符分量运算符 ( -)(12)下标运算符下标运算符 ( )(13)其他其他 (如函数调用运算符如函数调用运算符() C语言规定了运算符的优先级和结合性。语言规定了运算符的优先级和结合性

36、。 运算符的优先级别运算符的优先级别从高到低从高到低依次为:依次为: 初等运算符,如初等运算符,如()、 、 -、.; 单目运算符,如单目运算符,如 !、!、+、-、*(指针指针)、&、(类型类型); 算术运算符算术运算符(先乘除,后加减先乘除,后加减); 关系运算符;关系运算符; 逻辑运算符逻辑运算符(不包括!不包括!); 条件运算符;条件运算符; 赋值运算符;赋值运算符; 逗号运算符。逗号运算符。 所谓所谓结合性结合性是指,当一个操作数两侧的运算符具有相同是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右的优先级时,该操作数是先与左边的运算符结合,

37、还是先与右边的运算符结合。边的运算符结合。自左至右自左至右的结合方向,称为的结合方向,称为左结合性左结合性;反之,;反之,称为右结合性。结合性是称为右结合性。结合性是C语言的独有概念。语言的独有概念。除单目运算符、除单目运算符、赋值运算符和条件运算符是右结合性外,其他运算符都是左结赋值运算符和条件运算符是右结合性外,其他运算符都是左结合性。合性。4.4.自增、自减运算符自增、自减运算符 C语言中有两个很有用的运算符是在语言中有两个很有用的运算符是在其它计算机语言中通常没有的,它们是增其它计算机语言中通常没有的,它们是增1和减和减1运算符运算符+和和-。运算符。运算符+是给它的操是给它的操作数加

38、作数加1,而,而-是减是减1 。 自增、自减运算符自增、自减运算符+ -+ - 作用:使变量值加作用:使变量值加1 1或减或减1 1 种类:种类:前置前置 +i, -i (+i, -i (先执行先执行i=ii=i+1+1或或i=i-1i=i-1,再使用再使用i i值)值)后置后置 i+,i- (i+,i- (先使用先使用i i值值, ,再执行再执行i=ii=i+1+1或或i=i-1i=i-1) /k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4/4/3/3/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4例自增自减运算符的运用。例自增自减运算符的运用。i

39、nt main() int m=3,n=4,x;x=m+;x=x+8/-n;printf(%dn,x);return 0; 2.10 赋值运算符与赋值表达式赋值运算符与赋值表达式C语言包括基本赋值运算符和复合赋值运算符两种。1.基本赋值运算符形式:变量名形式:变量名=常量或表达式常量或表达式作用:将右边常量或表达式的值赋给左边的变量作用:将右边常量或表达式的值赋给左边的变量例如例如: a=5a=5 ; ; a=a+1 a=a+1; ; a a = (float)5/2 = (float)5/2 ; ; b=c+db=c+d; ;说明:(1)“=”是赋值运算符,不是等于号。 (2)赋值运算符左边

40、只能是变量,不能是常量或表达式。如2=a和a+b=2都是错误的。结合方向:从右向左。结合方向:从右向左。例如例如:“a=b=c=10;”等价于等价于“a=(b=(c=10);”即先将常量即先将常量10赋赋给变量给变量c,然后再将,然后再将10赋给变量赋给变量b,最后将,最后将10赋给变量赋给变量a。赋值赋值表达式可以出现在其它表达式中表达式可以出现在其它表达式中: (a=1)+(b=3)*4-(c=5)注意注意:如果表达式类型与左边的变量的类型不匹配,自动进:如果表达式类型与左边的变量的类型不匹配,自动进行类型转换。行类型转换。 2.2.复合复合赋值运算符赋值运算符复合赋值运算符:在赋值符复合

41、赋值运算符:在赋值符“=”=”之前加上其它运算符之前加上其它运算符共有共有1010种复合赋值运算符种复合赋值运算符 +=,-=,*=,/=,%= /*复合算术运算符复合算术运算符5个个*/ &=,=,|=,= /*复合位运算符复合位运算符5个个*/例如例如:a+=3 a=a+3a+=3 a=a+3 x x* *=y+3 x=x=y+3 x=x* *(y+3)(y+3)注意,注意,a+=ba+=b如果如果b b是包含若干项的表达式,则相当于它有括是包含若干项的表达式,则相当于它有括号。如:号。如:x x=y+3=y+3x x=(y+3)=(y+3)x=x%(y+3) x=x%(y+3) / /*

42、 *不要写成不要写成x=xx=xy+3y+3* */ / 例例1已知整型变量已知整型变量a=5,计算表达式,计算表达式a+=a*=a+a的值。的值。例例2 辅导及实验辅导及实验P21,二二.1int a=12;a+=a- =a*a;2.11 逗号运算符与逗号表达式逗号运算符与逗号表达式 逗号(逗号(,)是)是C语言提供的一种特殊运算符,语言提供的一种特殊运算符,用逗号将表达式连接起来的式子称为用逗号将表达式连接起来的式子称为逗号表逗号表达式达式,它的一般形式为:,它的一般形式为: 表达式表达式1,表达式表达式2,表达式表达式n说明:逗号表达式从左到右进行运算,说明:逗号表达式从左到右进行运算,

43、最后一最后一个表达式的值就是此逗号表达式的值,如:个表达式的值就是此逗号表达式的值,如:(i=3,i+,+i,j=10) 这个逗号表达式的值是这个逗号表达式的值是10,i的值为的值为5。 在所有的运算符中,逗号运算符的优先级最在所有的运算符中,逗号运算符的优先级最低。低。逗号运算符与逗号表达式逗号运算符与逗号表达式例如例如: x=8*2,x*4; 其计算过程为:先计算其计算过程为:先计算x=8*2,其值为,其值为x=16,再计算,再计算x*4,其值为,其值为64。整个表达式的。整个表达式的值为值为x*4的值,也就是的值,也就是64 结合方向:从左向右。结合方向:从左向右。例如:例如: x=23,y=12.1,11.20+x,x+y;第3章注意注意:并不是任何地方出现:并不是任何地方出现 的逗号都是逗号运算符。很多情的逗号都是逗号运算符。很多情况下仅用作分隔符。况下仅用

温馨提示

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

评论

0/150

提交评论