C语言数据类型、运算符与表达式

上传人:油条 文档编号:26853590 上传时间:2018-01-02 格式:PPT 页数:27 大小:462KB
返回 下载 相关 举报
C语言数据类型、运算符与表达式_第1页
第1页 / 共27页
C语言数据类型、运算符与表达式_第2页
第2页 / 共27页
C语言数据类型、运算符与表达式_第3页
第3页 / 共27页
C语言数据类型、运算符与表达式_第4页
第4页 / 共27页
C语言数据类型、运算符与表达式_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《C语言数据类型、运算符与表达式》由会员分享,可在线阅读,更多相关《C语言数据类型、运算符与表达式(27页珍藏版)》请在金锄头文库上搜索。

1、1,数据类型、运算符与表达式,C语言程序设计,2,3.1 C的数据类型,数据类型,基本类型,构造类型,指针类型,空类型,整型,字符型,实型(浮点型),单精度型,双精度型,枚举类型,数组类型,结构体类型,共同体类型,3,常量,在程序运行过程中,其值不能被改变的量称为常量,常量分为以下两类。可以从字面形式判别的是字面常量或直接常量;可以用一个标识符代表一个常量,称符号常量。符号常量的使用: #define RATE 8.54 void main( void ) float result; result = 1000.0 * RATE; printf( “result is %f n”, resul

2、t );,4,变量,变量名和变量值:,3,a,变量名,变量值,存储单元,标识符:标识变量名、符号常量名、函数名、类型名、文件名的有效字符序列。,C语言对标识符的规定: 1、只能由英文字母、数字字符、下划线构成,且第一个字符必须是英文字母(大写或小写)或下划线。2、在C语言中,力求简洁,做到“见名知义”,Turbo C允许32个字符。,C语言对变量的规定:做到先定义,后使用。,5,整型数据,整型常量的表示方法 整型常量即整型常数 十进制整数 八进制整数(以0开头的数)十六进制整数(以0x开头的数)整型变量的分类整型变量总体上可以分为有符号数和无符号数两类,6,整型数据,整型数据在内存中的存放形式

3、整型数据在内存中以二进制形式存放,确切的说是以补码的形式表示的。一个正数的补码和原码形式相同,而负数的补码是将该数的绝对值的二进制形式,按位取反再加1。,7,整型数据,整型变量的定义 对变量的定义,一般是放在一个函数的开头部分的声明部分。 main( ) int a, b, c, d; /* 定义整型变量 */ unsigned u; a = 12; b = -24; u = 10; c = a + u; d = b + u; printf( “a + u = %d t b + u = %d n”, c, d );整型数据的溢出 如果一个整型变量存放的值,超出它所允许的范围,将会产生溢出,例如

4、一个into型变量,如果其值为32767,再加1就会产生溢出,变成-32768。但运行时并不报错。,8,整型数据,整型常量的类型注意:1、一个整型常量,如果其值在-32768+32767范围内,认为它是into型,它可以赋给into型和long int型变量。2、一个整型常量,如果其值超过了上述范围,而在-2147483648+2147483647范围内,则认为它是long int 型。 3、一个整常数后面加一个字母u或U,认为是unsigned int 型。4、一个整常数后面加一个字母l或L,认为是long int型常数。,9,实型数据,实型常量的表示方法1、十进制小数形式:.123 23.

5、12、 指数形式:123e3 1.234e34(e前必须有数字,e后指数必须为整数)实型变量的分类 单精度(float): 4B 10-381038 67双精度(double):8B 10-30810308 1516长双精度: 16B 10-4931104932 1819实型数据在内存中的存放形式一个实型数据一般在内存中占四个字节,系统把一个实型数分成小数部分和指数部分,分别存放采用规范化的指数方式示,如:,10,实型数据,实型变量的定义示例: float x,y; /*指定x、y为单精度实数*/ double z; /*指定z为双精度实数*/实型数据应用中的误差问题(error.c)main

6、() float a,b;double c,d;a=123456.789e5;c=123456.789e5;b=a+20;d=c+20;printf(n%fn,a);printf(%fn,b);printf(%fn,c);printf(%fn,d); ,应避免将一个很大的数和很小的数直接作加、减运算,否则就会“丢失”小的数。,11,实型数据,实型常量的类型 1 c编译系统将实型常量作为双精度来处理,若按照单精度来处理,应该在实型常量的后面加字母f或F。 2 实型常量赋值给实型变量的规则:根据实型变量的类型来截取实型常量中相应有效位数字(able.c)。 main() float a; doub

7、le b; a=123456.789876e5;b=12345.789876e5; Printf(“%f,%fn”,a,b); ,12,字符型数据,字符常量C语言的字符常量是用单引号括起来的一个字符 ,如a,X,A。C语言还有一些特殊字符的常量,如下表,13,字符型数据,字符型变量字符变量用来存放字符常量,字符变量的定义形式如下:char c1,c2;可以用下面的语句对c1、c2赋值:c1=a; /*c1=97*/c2=b; /*c1=98*/printf(“%c,%c,%d,%d”,c1,c2,c1,c2);字符数据的存放 以字符的ASCII码存放在存储单元中,97,98,01100001,

8、01100010,C1,C2,C1,C2,14,字符型数据,例子 大小写字母的转换main( )char c1,c2; c1=a;c2=b; c1=c1-32;c2=c2-32; printf(“%c %c”,c1,c2);,注意:1、字符型数据和整形数据是通用的。但字符数据只能存放0255范围内的整数。 2、字符数据与整数可以直接进行算术运算。 3、字符数据与整型数据可以相互赋值 4、Turbo C将字符数据处理成带符号的整数,如果不想按有符号处理,可将字符变量定义为unsigned char类型。,main()into i; char c; i=a;c=97;printf(“%c,%dn”

9、,c,c);printf(“%c,%dn”,i,i);,15,字符串常量,字符串常量 字符常量是用一对双引号括起来的字符序列。如:How do you do . CHINA a $135.45 用printf语句输出一个字符串常量:printf(How do you do .n); 在内存中字符串是以字符0结束的,字符0是“字符串结束标志”,其ASCII码为0,以此判断字符串是否结束。注意:字符常量与字符串常量的区别: a a,a,0,a,16,变量赋值,先定义后赋值:int a; a=21;定义变量同时,使用变量初始化:int a=21;使被定义变量的一部分赋初值:int a,b,c=5;对

10、几个变量同时赋初值:int a=3,b=3,c=3;例子:fuzhi2.c这两种初始化方式都对吗:char c1=a; char c2=“addff”;,17,各类数值型数据间的混合运算,看例子:3+6*8.7-12表达式 123+23.4*b-2+a表达式是合法的。数据类型转换整型、实型、字符型数据间可以混合运算。在运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如下所示:,高 double float long unsigned 低 int char,short,18,算术运算符和算术表达式,C运算符简介 C语言的运算符有以下几类 1.算术运算符(+ - * / % +

11、-)2.关系运算符( = = | &)5.赋值运算符(=及其扩展赋值运算符)6.条件运算符(? :)7.逗号运算符(,)8.指针运算符(*和&)9.求字节数运算符(sizeof)10.强制类型转换运算符(类型)11.分量运算符(.和-)12.下标运算符( )13.其它(函数调用运算符( ),19,算术运算符和算术表达式,基本算术运算符号 + (加法运算符,或正值运算符。) - (减法运算符,或负值运算符。) * (乘法运算符) / (除法运算符) % (模运算符,要求%两侧均为整型数)算术表达式和运算符的优先级与结合性 用算术运算符将操作数(运算对象)连接起来的符合C语言语法规则的式子,称为C

12、算术表达式。 运算对象包括常量、变量、函数等等。例如 a * b / c - 1.5 + a+max(2,4)在表达式求值时,先按照运算符的优先级别高低次序执行。 算术运算符的结合方向为“自左至右”。运算符号有优先级别和结合性,参考附录,20,算术运算符和算术表达式,类型转换:当一个运算符的两侧的数据类型不同时,就要进行数据的类型转换,分为两种:自动类型转换和强制类型转换。强制类型转换运算一般形式为(类型名) (表达式)注意:表达式应该用括号括起来。 (double)a /* 将a转换成double类型 */(into)(x+y) /* 将x+y的值转换成整型 */(float)(5%3) /

13、* 将5%3的值转换成float型 */ 在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。,21,算术运算符和算术表达式,自增、自减运算符 作用是使变量的值增1或减1。例如+i, -i /* 在使用i之前先使i的值加(减)1 */i+, i- /* 在使用i之后先使i的值加(减)1 */区别:j = +i; j = i+;注意1、上述两种运算只能用于变量,而不能用于常量或表达式。2、上述两种运算的结合方向是“自右至左”。 例子:若i=3 , 则printf(“%d”, -i+) 输出结果为-3,然后 i增值为4,22,算术运算符和算术表达式,有关表达式使用中的问题说明

14、1、表达式中包含自增或自减运算时,很容易出错。 例如:(i+)+(i+)+(i+)不同系统处理的不同,如i为3,可为3+4+5,也可为3+3+3,为避免歧义性,如果想得到12,可以写成如下:i=3: a=i+; b=i+; c=i+; d = a+b+c; 2、C语言中有的运算符为一个字符,有的运算符由两个字符组成,在表达式中尽可能多的“自左而右”组成一个运算符 。如:i+j应解释为(i+)+j,而不是i+(+j)。 3、在调用函数时,实参数的求值顺序,标准C中并没有统一规定。如:设i的初值为3,下面的函数调用printf( “%d %dn”, i, i+ )在有的系统中,从左到右求值,输出“3,3”。在多数系统中,是从右到左求值,输出“4,3”。在vc和turbo c中输出顺序都是从右到左。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号