




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 基本数据类型、运算符和表达式,C语言的基本成分,第2章数据类型、运算符和表达式,2.1 C语言的基本数据类型 2.2 常量 2.3 变量 2.4 运算符和表达式,整型 字符型 单精度型 基本类型 实型(浮点型) 枚举类型 双精度型 数组类型 数据类型 构造类型 结构体类型 共用体类型 指针类型 空类型,2.1 C的数据类型(Data type),C语言的基本数据类型 data type,整型 int 字符型 char 单精度型 float 基本类型 实型(浮点型) 双精度型double 枚举类型 enum,数据类型的意义,数据的类型决定了: 1. 数据占内存字节数和存储形式 2. 数据取值范围 3. 在该类数据上可进行的操作,常量:在程序运行过程中,其值不能被改变的量称为常量。,2.2 常量 constant,1) 整型常量(整常数),C语言提供了三种形式 (1) 十进制整数:78,-324,0 (2) 八进制整数:以0开头,0123表示(123)8 (3) 十六进制整数:以0x开头, 0x123表示(123)16,2) 实型常量,2) 实型常量(浮点数) 小数形式:由数字、数符和小数点组成(必须有小数点)。 例: 0.123,-123.,.123 指数形式:数字部分e指数部分 例:123e3 1.2e5 注意:字母e(或E)之前必须有数字,e后面 指数必须是整数(13位)。(p13) 如:e3、2.1e3.5、e是不合法的指数形式, 字符常量是用单引号括起来的一个字符。 a ,x, d ,? , 转义字符:将反斜杠后面的字符转变成另外的意义。例: n表示换行符 ,t表示纵向跳格(书P1415)。,3) 字符常量,4) 字符串常量,字符串常量:用一对双引号括起来的字符序列。 例如: “CHINA“,“a “ , “ X+Y “, “ #$%a “ “ Please input two integers:“,字符串常量在内存中的存放:每一个字符均以其ASCII码存放,且最后添加一个“空字符” 作为字符串的结束标志。 例:字符串常量“CHINA”存放在内存中的情况是: 因此,字符常量a和字符串常量“a“的区别是: 字符a :1字节(值为97) 字符串“a“:2字节(值为97,0),C,H,I,N,A,0,字符串的结束标志,5) 符号常量,用标识符表示的常量称为符号常量。习惯上,符号常量名用大写,变量用小写。,例1: #define PRICE 30 main( ) int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,符号 常量,符号常量的注意事项,1. 符号常量不同于变量,其值在所在的函数内不能改变。 2. 使用符号常量可以使程序清晰,修改容易。 3. 最好使用关键字const定义常量,例如: const int PRICE = 30; const double e = 2.71828182845905;,符号常量举例,main( ) const char BELL = a; printf(“total=%d“, BELL); printf(“total=%c“, BELL); ,枚举常量 enumeration constant,An enumeration is a list of constant integer values, as in(P152) enum sex male, female; enum boolean False, True ; enum months JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC ; /* FEB = 2, MAR = 3, etc. */,2.3 变量,变量:在程序运行过程中,其值可以改变的量称为变量。,C语言中, 变量须先定义,后使用 如: int student; student=30; 若直接写成student=30, 则编译时会出现“符号student未定义错误”。, 一旦变量被定义,即可在编译时为其分配相应数量的单元。,一旦变量被定义, 其类型便确定。则可检查其运算的合法性。,如: a % b 表示a整除以b的余,则a,b必须为整型量。,变量的定义,定义变量时指定变量名和变量的类型。,变量名 用标识符表示,对应一定数量的内存存贮单元,其占用的存贮单元数视变量类型而定。,标识符 由字母、数字、下划线组成且由字母或下划线开头的字符串。,变量名,除了可用来命名变量,标识符还可作为常量名、函数名、类型名、文件名等。,习惯上,变量名、函数名等用小写字母表示。常量名用大写字母表示(以增加可读性)。 例如: sum, student_name, price等为变量名; PI,PRICE等为常量名。,另: 需注意标识符长度限制,视编译系统不同而不同。,名字使用惯例,变量值,即为变量存储的数据值。 可通过赋值语句赋值: int a,b,c; a=2; b=c=5; 初始化:在定义变量时指定初始值。 int n=2;,基本整型 (int) 短整型 (short int 或 short) 长整型 (long int 或 long) 无符号型 (unsignedint、 unsigned short、 unsigned long),整型变量,C语言标准没有规定整型变量在计算机内存中所占的字节数,它与具体的机器和操作系统有关: IBM PC 所占位数 数的范围 int 16 -32768+32767 short 16 -32768+32767 long 32 - 2147483648 +2147483647 unsigned int 16 065535 unsigned short 16 065535 unsigned long 32 04294967295,整型数表示的数据的范围,main ( ) int a, b, c, d; /*指定a, b, c, d为整型变量*/ unsignd u; /*指定u为无符号整型变量*/ a=12; b= 24; u=10; c=a+u; d=b+u; printf(“a+u=%d,b+u=%dn“,c,d); ,整型变量应用举例,运行结果为 a+u=22, b+u= 14,由此看到: 不同类型的整型数据可进行算术运算。,注意,注意:一个整型常量或表达式的值在赋给一个变量时其值一定要在变量类型所能表示的范围内。 当常数(量)在 3276832767之间,则可赋给int, long int 变量。 若在21474836482147483647之间,则可赋给 long int 变量。 一个常数后加 l,或L,表示长整数. 如123l. 主要用于函数调用时形、实参数传递。,实型变量,单精度浮点数(float): 在内存中占4个字节,提供7位有效数字的精度。 双精度浮点数(double): 在内存中占8个字节,提供 16位有效数字的精度。,main() float a; double b; a=111111.111; b=111111.111; printf(“a=%fnb=%fn”,a,b); ,运行结果: a=111111.109375 b=111111.111000,浮点数的精度实例1,浮点数的精度实例2,#include main( ) float x=111111.111; float y=222222.222; printf(“x+y=%fn“,x+y); return 0; ,输出结果:x+y=333333.328125,浮点数的精度实例3,#include main( ) double x=1111111111111.111111111; double y=2222222222222.222222222; printf(“x+y=%fn“,x+y); return 0; ,输出结果: x+y=3333333333333.333000,字符变量,字符型变量只能放一个字符。 定义 char c1,c2; 赋值 c1= a;c2= b;,字符数据是以ASCII码存储的,它的存储形式与整数的存储形式相类似,即c1变量存储的是ASCII码97,也就是说下面两个语句是等价的 c1= a; 和 c1=97;,它们在内存的存储情况:,字符数据存储形式,可以在定义变量的同时使变量初始化。 例: int a=3; /*指定a为整型变量,初值为3*/ float f=3.56; char c= a; 说明: 1. 可以给被定义的变量的一部分赋初值。 int a,b,c=5; 2. 可以对几个变量赋以同一个值。不能写成: int a=b=c=3; 应该写成 int a=3,b=3,c=3; 3. 变量赋初值是在程序运行时完成的。 int a=3; 相当于 int a; a=3; 两条语句,变量赋初值(初始化)时的注意事项,2.4 运算符和表达式,运算符operator: 运算的符号表示。 C语言有丰富的运算功能,1. 算术运算符 +, , , /, % , 等,3. 逻辑运算符 !, &, ,2. 关系运算符 , =, =, !=,2.4.1 C运算符简介,4. 位运算符 , , , , &.,5. 赋值运算符 = 等,6. 条件运算符 ? 等,7. 逗号运算符 ,8. 指针运算符 *, &,11. 分量运算符 , ,12. 下标运算符 ,13. 其它运算符 如函数的调用( ),9. 求字节数运算符 sizeof,10. 强制类型转换运算符 (类型),一、基本算术运算符,+ 加法 正值 3+6, +3, 减法 负值 6 4, 5, 乘法 38,/ 除法 8 / 5,% 求余 7 % 4 的值为3,2.4.2 算术运算符和算术表达式,1. 两个整数相除结果为整数,如5/3=1; 2. 如果除数或被除数中有一个为负值,多数机器采取“向零取整”的方法。 如:5/ 3 1 3.参与运算的两个数中有一个为实数,则结果为double型。例:6/2.0的结果为3.0 4. 求余运算符两侧的运算数均为整型量。,算术运算说明,算术表达式,算术表达式: 用算术运行运算符和括号将运算对象连接起来,且符合C语法规则的式子。,例: a b / c 1.5 + ad e,运算对象: 常量、变量、函数等,优先级: ( ), , /, %, +, ,结合性: 同一优先级, 自左向右,为左结合性,反之为右结合性。,表达式求值时,先按运算符的优先级别高低次序执行。 若优先次序相同,则按“自左至右”的结合方向计算。,算术运算符的优先级与结合性,1.乘号不能省。 如:ab应写成 a*b 2.所有符号写成一行。 3.C语言中只有圆括号,可以嵌套使用,但左、右括号必须匹配。 4.避免两个运算符并置。如a*b/-c应写为: a*b/(-c) 5.由于两个整数相除结果仍为整数,所以要转换成实数运算。如 5/12应该写成5.0/12或5/12.0 6.三角函数的自变量使用弧度。如SIN50应写成sin(50*3.1415926/180),在将一个数学式子改写成C语言表达式时应注意以下几点:,3x2+4xysin56-|x-y|e2.3,3*x*x+4*x*y*sin(56*3.1415926/180) -fabs(x-y)*exp(2.3),sin+cossin,sin(thita)+sin(alf)*cos(bate),数学表达式转换成C表达式例子:,+ + 自增1, 自减1,2. 自增,自减运算符,n+ 相当于 n=n+1,+n 相当于 n=n+1,+, 主要用于循环变量自增或自减。,自增运算符应用实例,#include int main( ) int i; char ch=A; for(i=0;i26;i+) if(i%13=0) printf(“n“); printf(“%c “,ch+i); return 0; ,输出结果: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z,i 称为循环计数器或者循环变量,自减运算符应用实例,#include int main( ) int i; char ch=A; for(i=25;i=0;i-) if(i+1)%13=0) printf(“n“); printf(“%c “,ch+i); return 0; ,输出结果: Z Y X W V U T S R Q P O N M L K J I H G F E D C B A,若int i = 3;,+ +i, i+都会使i的值增加1, 但有区别:,+i: 在表达式使用i值之前;先使i值+1;,i+: 先求出表达式的值,再使i值+1.,j= +i; j=4, i=4. (i=i+1; j=i;),j=i+; j=3, i=4. (j=i; i=i+1),+var 与 var+区别,结果为 i=4, j=-3,#include int main( ) int i=3,j; j=-i+; /* i+相当于(i+) */ printf(“i=%d, j=%dn“,i,j); return 0; ,自增运算符的例题,同理: i, i ,均使i值1,但:,又如: printf (“i=%dn“, i+); 结果: i=3,若: printf (“i=%dn“, +i); 结果: i=4, i: 先使i值1,再使用i值;,i : 先使用i值,再使i值1,i=3;,使用自增,自减运算符的注意事项,1. +和 运算法只能用于变量,不得用于常量和表达式. 如 5+ +, (a+b)+ +均为不合法. 2. +, ,的结合性为从右至左,而一般算术运算符为从左至右。如: i+ 因为 “和“+ +“为同一优先级. i+相当于(i+),1. 要慎用+、 运算符,否则容易出错。,如: 表达式(i+)+(i+)+(i+) (i=3) 一般认为: 从左至右: 3+4+5=12,i6.,但Turbo C. MSC 都是先取三个原值 相加: i+i+i=9 i6,如果表达式数为: k=(+i)+(+i)+(+i),先对i进行3次自加,为6,然后三个i相加为18,而i为6。,有关表达式使用中的问题说明,2. 在表达式中,有的运算符为一个字符,有的为两个字符。,3. 在函数调用时,如:,一般地: 自左至右尽可能多地将若干字符组成一个运算符。,例: i+j, 究竟理解为(i+)+j还是i+(+j)?,printf(“%d, %d“, i, i+);,若i=3, 若参数计算从左至右, 则输出 3, 3,若从右至左, 则输出4, 3,上述问题看似复杂,最好上机实践.,加一与减一运算符的“副作用”,在函数调用中各个变元的求值次序也是未指定的。因而,函数调用语句 printf(“%d %dn“, +n, power(2,n) ); /* 错*/ 对不同的编译程序可能会产生不同的结果。为了解决这一问题,可把该语句改写成 +n; printf(“%d %dn“, n, power(2,n) );,加一与减一运算符的“副作用”,下面的表达式语句是这种使人讨厌的情况的一个典型例子: ai = i+; 问题是,数组下标的值i是旧值还是新值。 编译程序对之可以有不同的解释,并视不同的解释产生不同的结果。C语言标准故意留下了许多诸如此类的问题未作具体规定。,符号“ = “为赋值运算符。Assignment operator,2. 整型数据赋给实型变量,数值不变,但按实数形式存放.,1. 将实型数据(无论单,双精度)赋给整型变量时,舍弃小数.,赋值时,两边类型若不一致,则按以下规则转换:,2.4.3 赋值运算符和赋值表达式,4. 将intlong int, 进行符号扩展。 即: 符号扩展, 低16位long 的低16位。,5. long int int 则高16位截断。,3. 字符型数据赋给整型变量时:,(2)字符带符号整型变量,则字符高位扩展。,(1)字符无符号整型变量,则存入低8位,高8位补零。,6. 将unsigned int 型long int高位补0。,原值传送,但数据大小不能超值。 如: unsigned int a=65535; int b; b=a; 则越界。,而位数相同部分赋值 unsigned int int unsigned long long unsigned short short,在“ “号之前加一个其它运算符。,C语言规定:凡是二目运算符均可构成复合运算符。 +=,-=,*=,/=,%=,=,&=,=,|=,例: a+=3; 相当于 a=a+3; x=y+8; 相当于 x=x (y+8); x%=3; 相当于x=x% 3;,复合赋值运算符,复合赋值运算符的意义,简化程序,使程序精炼。 提高编译效率。, = ,例: x=10 为一赋值表达式 其中又可以是一个赋值表达式。,例: x=(y=10) 相当于 y=10;x=y 由于赋值号为右结合性,于是“ ( ) “可省略, 即为:x=y=10;,赋值表达式,例: a + = a =aa (设a12),又: a=5+(c=6) c=6, a=11 a=(b=4)+(c=6) b=4, c=6, a=10 a=(b=10)/ (c=2)b=10,c=2, a=5,进一步,还可用复合赋值运算符作下列运算:,步骤: aa144. a =a a a=a a a=12 144= 132 a + = 132 a = a+(132) = 264,一般形式: 表达式1, 表达式2,其计算规则: 先计算表达式1,再计算表达式2,最后值为表达式2的值。,例:a=35, a 4 则: 先计算3 5, a15, a 4=60,结果为60。,2.4.4 逗号运算符和逗号表达式,又如: (a=35, a 4), a+5,扩展形式: 表达式1, 表达2, ,表达式n,结果为20(作为逗号表达式的值), a+5a 即 20a., 3 5=15a,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南阳师范学院《品牌与形象》2023-2024学年第二学期期末试卷
- 郑州城市职业学院《人力资源管理技能开发实训》2023-2024学年第二学期期末试卷
- 兰州信息科技学院《国际发展与国际组织概况》2023-2024学年第二学期期末试卷
- 吉林工程职业学院《基础英语F4》2023-2024学年第二学期期末试卷
- 苏州科技大学天平学院《中药药理学》2023-2024学年第二学期期末试卷
- 河北经贸大学经济管理学院《路桥施工技术》2023-2024学年第二学期期末试卷
- 铜陵学院《统计机器学习方法》2023-2024学年第二学期期末试卷
- 西藏警官高等专科学校《海外华文文学研究》2023-2024学年第二学期期末试卷
- 天津天狮学院《图形图像制作》2023-2024学年第二学期期末试卷
- 达州中医药职业学院《温病学》2023-2024学年第二学期期末试卷
- 企业使用危险化学品分装作业安全管理指引
- 酥饼行业分析
- 《树莓派应用开发》课件 第03、4章-树莓派操作基础、树莓派常用命令
- 消化系统疾病的病史采集与评估
- 安徽省小餐饮信息公示卡注销申请表【模板】
- NB-T 47013.7-2012(JB-T 4730.7) 4730.7 承压设备无损检测 第7部分:目视检测
- 危大工程专项方案验收记录表(基坑、模版、脚手架)
- 第九届全国大学生化学实验邀请赛物理化学题二
- JCT796-2013 回弹仪评定烧结普通砖强度等级的方法
- 新版出口报关单模板
- 《血管活性药物静脉输注护理》标准解读
评论
0/150
提交评论