1、C程序设计主讲人:兰强第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式第三章 数据类型、运算符与表达式主要内容:数据类型元算符表达式第三章 数据类型、运算符与表达式3.1的数据类型(Data Type)概念:A data typedata type is a set of valuesvalues and a set of operationsoperations on those values.第三章 数据类型、运算符与表达式3.2常量与变量3.2.1常量与符号常量常量常量定义:在程序运行过程中,其值不能被改变不能被改变的量成为常量。3,-12,0,99(整型常量)5.3,-7
2、.82(实型变量)M,P(字符常量)符号常量符号常量(通常采用宏定义)#define PRICE 30优点:(1)含义清楚;(2)“一改全改”第三章 数据类型、运算符与表达式3.2常量与变量3.2.1常量与符号常量例如:#define PRICE 30main()int num,total;num=10;totaltotal=num*=num*PRICEPRICE;printf(“total=%d”,total);第三章 数据类型、运算符与表达式3.2常量与变量3.2.2变量定义:在程序运行过程中,其值可以改变可以改变的量称为变量。用来标识变量名,符号常量名,函数名,数组名,类型名,文件名的有
3、效字符序列称为标识符标识符(IdentifierIdentifier),标识符只能由字母字母、数字数字和下划线下划线三种字符组成,且第一个字符必须为字母或下划线字母或下划线。例如:正确:_str,student,Weight,W_person,WINDOWS,day,Go,XyZpO,KFC,错误:M.D.John,¥123,#_price,3_name 第三章 数据类型、运算符与表达式3.2常量与变量3.2.2变量变量的使用原则:先定义,后使用。先定义,后使用。变量的长度定义:变量的长度定义:Borland Turbo C 32字节Microsoft Visual C+6.0 2047字节第
4、三章 数据类型、运算符与表达式3.3整型数据3.3.1整型常量的表示方法(1)十进制整数;123,-456,0(2)八进制整数;0123表示(123)8(3)十六进制整数。0 x123,(123)163.3.2整型变量数据在内存中是以二进制的形式存放的。数据在内存中是以二进制的形式存放的。数值是以该数的补码(数值是以该数的补码(complementcomplement)表示的。)表示的。正数的补码和其原码的形式相同。正数的补码和其原码的形式相同。负数的补码是将该数的绝对值的二进制形式,按位取反再加负数的补码是将该数的绝对值的二进制形式,按位取反再加1 1。第三章 数据类型、运算符与表达式3.3
5、整型数据例如:例如:正整数:正整数:1010 补码补码负整数:负整数:-10-10 10 10的原码的原码 取反取反 补码补码0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 00 0 0 0 0 0 0 0 0 0 0 0 1 0 1 01 1 1 1 1 1 1 1 1 1 1 1 0 1 0 11 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0第三章 数据类型、运算符与表达式3.3整型数据第三章 数据类型、运算符与表达式3.3整型数据ANSI标准定义的整型数据类型类型型比特数比特数最小取最小取值范范围signed int16-3276832767 即-215(215
6、-1)unsigned int16065535 即 0(216-1)signed short int16-3276832767 即-215(215-1)Unsigned short int16065535 即 0(216-1)signed long int32-2147483648-2147483647 即-231(231-1)unsigned long int3204294967295 即 0(232-1)第三章 数据类型、运算符与表达式3.3整型数据3整型变量的定义 C规定在程序中所有用到的变量都必须在程序中定义,即“强制类型定义”。例如:main()int a,b,c,d;unsigne
7、d u;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn”,c,d);第三章 数据类型、运算符与表达式3.3整型数据4整型数据的溢出例3.3:Main()int a,b;a=32767;b=a+1;printf(“%d,%d”,a,b);运行结果:32767,-32768第三章 数据类型、运算符与表达式3.4实型数据3.4.1实型常量的表示方法(1)十进制小数表示;123.123(2)指数形式。123E123E或e后面的指数必须为整数。123E123.123第三章 数据类型、运算符与表达式3.4实型数据3.4.1实型变量1.存放形式一个实型数
8、据在内存中占4个字节。2.实型变量的分类数符数符小数部分小数部分指数指数类型型比特数比特数有效数字有效数字数数值范范围Float326710-371038Double64151610-30710308Long double128181910-4931104932第三章 数据类型、运算符与表达式3.4实型数据3.4.1实型变量1.实型数据的舍入误差 应当避免将一个很大的数和一个很小的数直接向加或相减,否则就会“丢失”小的数。例3.4main()float a,b;a=123456.789e5;b=a+20;printf(“%f”,b);第三章 数据类型、运算符与表达式3.5字符型数据3.5.1字
9、符常量 C的字符常量是用单引号括起来的一个字符。C还允许一种特殊形式的字符常量,就是以一个“”开头的字符序列。字符形式字符形式含含义ASCII代代码n换行,将当前位置移到下一行开头10t水平制表(跳到下一个tab位置)9b退格,将当前位置移到前一列8r回车,将当前位置移到本行开头13f换页,将当前位置移到下页开头12反斜杠字符“”92单引号字符39”双引号字符34ddd1到3位8进制所代表的字符xhh1到2位16进制所代表的字符第三章 数据类型、运算符与表达式3.5字符型数据3.5.1字符常量例3.5转义字符的使用main()printf(“ab ct derftgn”);printf(“ht
10、ibbj k”);第三章 数据类型、运算符与表达式3.5字符型数据3.5.2字符变量字符变量是用来存放字符常量,一个字符变量只能存放一个字符。字符变量的定义形式如下:char c1,c2;3.5.3字符数据在存放和使用字符常量是将其ASCII码存入字符变量的存储单元中的。C语言使用的字符数据和整型数据之间可以通用。第三章 数据类型、运算符与表达式3.5字符型数据3.5.3字符数据在存放和使用例3.6 向字符变量赋以整数main()char c1,c2;c1=97;c2=98;printf(“%c%c”,c1,c2);printf(“%d%d”,c1,c2);第三章 数据类型、运算符与表达式3.
11、5字符型数据3.5.3字符数据在存放和使用例3.7 大小写字母的转换main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c%c”,c1,c2)运行结果:A B第三章 数据类型、运算符与表达式3.5字符型数据3.5.4字符串常量字符串常量是一对双引号双引号括起来的字符序列字符序列。如:“How do you do.”,“CHINA”,“$500.00”都是字符串常量。可以输出一个字符串,如:printf(“How do you do.”);字符字符aa和和“a”“a”的区别的区别 C规定:在每一个字符的结尾加一个“字符串结束标志”,以便系统
12、据此判断字符串是否结束。C规定以0作为字符串结束标志。CHINA0aa0第三章 数据类型、运算符与表达式3.6变量符初值C语言允许在定义变量的同时使变量初始化。如:unsigned int count=70;float f=16.032;char grade_A=A;char grade_B=B;int a,b,c=5;/*只是对c赋值*/第三章 数据类型、运算符与表达式3.7各数值型数据间的混合运算整型、实型和字符型数据间可以混合运算。例如:10+a+1.5-8765.1234*b10+a+i*f-d/e上述的类型转换是由系统自动进行的。第三章 数据类型、运算符与表达式3.8算术运算符和算术
13、表达式运算符运算符类型型说明明1.算术运算符(+-*/%)2.关系运算符(=!=)3.逻辑运算符(!&|)4.位运算符(|&)5.赋值运算符(=)6.条件运算符(?:)7.逗号运算符(,)8.指针运算符(*和&)9.求字节数运算符(sizeof)10.强制类型转换运算符(类型)11.分量运算符(.-)12.下标运算符()13.其他(如函数调用运算符)第三章 数据类型、运算符与表达式3.8算术运算符和算术表达式1 1、运算符的优先级与结合性、运算符的优先级与结合性参看附表III:运算符和结合性2 2、强制类型转换运算符、强制类型转换运算符格式:(类型名)(表达式)例3.8强制类型转换main()
14、float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);运行结果:x=3.600000,i=3第三章 数据类型、运算符与表达式3.8算术运算符和算术表达式3 3、自增、自减运算符、自增、自减运算符+i,-i;(在使用i之前之前,先使i的值加(减)1)i+,i-;(在使用i之后之后,先使i的值加(减)1)注意:注意:(1 1)只能用于变量;)只能用于变量;(2 2)结合方向是)结合方向是“自右至左自右至左”。第三章 数据类型、运算符与表达式3.8算术运算符和算术表达式4 4、有关表达式使用中的问题、有关表达式使用中的问题(1 1)调用方向)调用方
15、向A=func1()+func2();A=func1()+func2();例如:例如:f f(i i)=(i+i+)+(i+i+)+(i+i+)(2 2)如何结合)如何结合例如例如:i+j:i+j(3 3)实参数的求值顺序)实参数的求值顺序例如例如:printf(“%d,%d”,i,i+);:printf(“%d,%d”,i,i+);第三章 数据类型、运算符与表达式3.9赋值运算符和赋值表达式1 1、赋值运算符、赋值运算符 赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。第三章 数据类型、运算符与表达式3.9赋值运算符和赋值表达式2 2、类型转换、类型转换(1)实型数据-整型变
16、量(2)整型数据-单、双精度变量(3)double数据-float变量(4)字符型数据-整型变量(5)int,short,long数据-char变量(6)signed int数据-long int变量(7)unsigned int数据-long int变量第三章 数据类型、运算符与表达式3.9赋值运算符和赋值表达式2 2、类型转换、类型转换例如:有符号数据传送给无符号变量main()unsigned a;int b=-1;a=b;printf(“%u”,a);运行结果:65535第三章 数据类型、运算符与表达式3.9赋值运算符和赋值表达式总结:不同类型的整型数据间的赋值归根结底就是一条,按存储
17、单元中的存储形式直接传送。第三章 数据类型、运算符与表达式3.9赋值运算符和赋值表达式3 3、复合的赋值表达式、复合的赋值表达式a+=3;等价于 a=a+3;x*=y+8;等价于 x=x*(y+8);x%=3;等价于 x=x%3;4 4、赋值表达式赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式赋值表达式”格式:a=(b=4)+(c=6);(表达式的值为10,a=10,b=4,c=6)a=(b=10)/(c=2);(表达式的值为5,a=5,b=10,c=2)第三章 数据类型、运算符与表达式3.10逗号运算符和逗号表达式 C语言提供了一种特殊的运算符逗号运算符,用它将
18、两个表达式连接起来。如:表达式表达式1 1,表达式,表达式2 2,表达式,表达式3 3,表达式,表达式n n(1)x=(a=3,6*3);(x=18)(2)x=a=3,6*a;(x=3)(3)printf(“%d,%d,%d”,(a,b,c),b,c);(结果为c,b,c)第三章 数据类型、运算符与表达式本章总结:本章总结:本章主要介绍了在本章主要介绍了在C89C89标准下数据类型、运算符、表标准下数据类型、运算符、表达式三个方面的内容。这些内容只是起到了一个抛砖引达式三个方面的内容。这些内容只是起到了一个抛砖引玉的作用,更多的细节内容,需要去查阅更多的相关资玉的作用,更多的细节内容,需要去查阅更多的相关资料。比如在料。比如在C99C99标准下定义了更大的整型标准下定义了更大的整型:signed long long intsigned long long intunsigned long long intunsigned long long int以及布尔型、复数浮点型等。以及布尔型、复数浮点型等。_Bool_Bool、float _Complexfloat _Complexdouble _Complexdouble _Complexlong double _Complex long double _Complex
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100