




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 简单算术运算符和算术表达式算术运算符和算术表达式 C语言提供了23种运算符,在这章内只介绍算术运算符和增1、减1运算符及强制类型转换运算符,其余的将在以后的授课中逐一介绍。3.1 C运算符和表达式3.2 宏常量与宏替换3.3 const 常量3.4 自动类型转换与强制类型转换3.5 常用标准数学函数3.6 小结3.1 C运算符和表达式3.1.1 基本的算术运算符和表达式1、基本的算术运算符+ 、 加号运算符、 减号运算符、 乘号运算符、 除号运算符、 模运算符,或叫作求余运算符 说 明 如果参加、运算的两个数中有一个数为实数,则结果是doubledouble型,因为所有实数都 按dou
2、bledouble型进行运算。、模运算符,或叫作求余运算符。注意:% % 运算要求运算符两的运算对象均为整型运算要求运算符两的运算对象均为整型2 2、算术表达式和运算符的优先级与结合性、算术表达式和运算符的优先级与结合性 所谓算术表达式即:用算术运算符和括号将用算术运算符和括号将运算对象连接起来、符合运算对象连接起来、符合C C语法规则的式子。语法规则的式子。其中运算包括常量、变量、函数等。优先级结合性 有关结合性的问题将会在以后进行详细的说明。参见附录C C运算符的优先级与结合性3.1.2 复合运算符 设变量a都被定义为整型变量,并给变量a赋了初值10。这句话要用程序表示如下左图所示。若要想
3、将变量a的值加20,其表达式的写有两种:使用一般形式(如下中图所示);使用复合运算符方式(如下右图所示)int a, b;a = 10;或:int a = 10, b;a = a + 20a += 20这两个表达式作用相同,其他算术运算符的复合用法依次类推3.1.3 3.1.3 自增、自减运算符自增、自减运算符 所谓增、自减的作用是使变量的值增1或减1。i +, i - 在调用i之后,再使i的值加或减1+ i , - i 在调用i之前,先使i的值加或减1。 粗略地看,i+和+i 的作用均相当于i = i + 1,但+i和i+不同之处在于: int main(void) int i = 3;pr
4、intf(“first i= %d”, + i);printf(“second i= %d”, i+);printf(“third i= %d”, i);return 0;编辑、编译、链接此程序,并运行它,从输出结果分析和理解+i和i+的区别。有关自增、自减的说明有关自增、自减的说明 自增运算符和自减运算符 只能用于只能用于变量变量。 + 和-的结合方向是“自右至左自右至左”。有关自增、自减的补充 1int main(void)int x,i=3; x=(i+)+(i+)+(i+); printf(x=%d i=%d,x,i);结果为:结果为:x=9 i=6x=9 i=6int main(vo
5、id)int x,i=3; x=(+i)+(+i)+(+i); printf(x=%d i=%d,x,i);结果为:结果为:x=18 i=6 以上为自增在赋值表达式中的运算结果,要注意 左面由于是后+,先提取i的原值相加,即3+3+3得9。而右面是先+,故先得i为6,再6+6+6得18 i为6的时刻,左面i是在做完赋值后变为6的,而右面i是在赋值前已变为6了。有关自增、自减的补充 2main()int i=3; printf(%d,(i+)+(i+)+(i+); 结果为:12main()int i=3; printf(%d,(+i)+(+i)+(+i); 结果为:15 以上为自增在函数参数中的
6、运算结果。以上两程序都在第一个printf后再一句printf(“i=%d”,i);则显示i=?3.2 宏常量与宏替换 另外可用一个标识符代表一个常量,其定义方式如下: 以后在程序中凡遇到PRICE都代表30。 PRICE就称为符号常量(宏常量)。在程序中将PRICE替换成30的这个动作叫“宏替换”。3.3 const 3.3 const 常量常量 使用宏常量的最大问题是,宏常量没有数据类型。编译器对宏常量不进行类型检查,只进行简单的字符替换,字符替换时极易产生意想不到的错误。 那么可否声明具有某种数据类型的常量呢?在这里将介绍const常量。 在声明语句中,只要将const类型修饰置于类型说
7、明之前,就可将类型说明后的标识符声明为具有该类型的const常量了。 由于编译器将其放在只读存储区,不允许在程序中改变其值,因此const常量只能在定义时赋值。例如: const double PAI = 3.1415926; 声明了名为PAI的实型const常量,其值为3.1415926。 具体理解参见教材P34 高 double float long 低 int char, short 图中横向向左的箭头表示横向向左的箭头表示必定的转换必定的转换,如字符数据必定先转换为整数,float型数据在运算时一律先转换成双精度型,以提高运算精度。 即使是两个floatfloat型数据相加,也先都化为
8、doubledouble型,然后再相加。的箭头表示当前运算对象为不同类型时转换的方向的箭头表示当前运算对象为不同类型时转换的方向。例intint 型与doubledouble型数据进行运算,先将intint 型的数据转换成doubledouble,然后再进行运算。3.4 自动类型转换与强制类型转换自动类型转换与强制类型转换类型转换类型转换 如果赋值运算符两侧的类型不一致,但都是数值或字符型时,在赋值时要进行类型转换。 实型数据赋给整型变量 整型数据赋给单、双精度变量 double型数据赋给float变量 字符型数据赋给整型变量 int、long型数据赋给一个char变量注意:这里指的是系统自动
9、进行转换(需解释)。强制类型转换运算符强制类型转换运算符 可以利用强制类型转换运算符强制类型转换运算符将一个表达式转换成所需类型。例如: (double)a(double)a (将a转换成double类型) (int)(x+y)(int)(x+y) (将x+y的值转换成整型) (float)(5%4)(float)(5%4) (将54的值转换成float型)其一般形式为:(类型名)(表达式)(类型名)(表达式)表达式应该用括号括起来。如果写成(int)x+y(int)x+y 则只将x x转换成整型,然后与y y相加。说说 明明 在强制类型转换时,得到一个所需要类型的中间变量,原来的变量的类型未
10、发生变化。如: (int) x(int) x (不要写成int(x)int(x)如果x x原指定为floatfloat型,进行强制类型运算后得到一个intint型的中间变量,它的值等于x x的整数部分,而x x类型不变(仍为floatfloat型)。例 强制类型转换 int main(main(void) ) float x; x; int i; i; x = 3.14;x = 3.14; i = (i = (int)x;)x;printf(printf(“x=%f,i=%dx=%f,i=%d”,x,i);,x,i);return 0; 0; 运行结果:运行结果:x=3.149000 i=3x
11、=3.149000 i=3X类型仍为float,值仍为3.14#include /标准输入输出头文件#include /标准数学函数头文件int main(void)double a, b, c, s, area;a = 3;b = 4;c = 5;s = (a + b + c) / 2; /能否写成1/2* (a + b + c) area = sqrt(s * (s - a) * (s - b) * (s - c);printf(area = %fn, area);return 0; 3.5 常用标准数学函数参见教材P38注意:当在程序中使用标准的数学函数据时,程序中要挂上数学库的头文件。
12、如下所示:逗号运算符和逗号表达式 C语言提供一种特殊的运算符。用它将两个表达式连接起来。如:3+6,7+8。这种表达式叫作,其一般形式为: 表达式表达式1 1,表达式,表达式2 2 的求解过程是:先求解表达式表达式1 1,再求解表达式表达式2 2。例如:“5 56 6,7 79 9”的值为1616。 从附录C中查出,而结合方向是“”(左结合)。那么如果有下面的表达式: a=5a=5* *6,a+8 6,a+8 应理解为由 a=5a=5* *6 6和a+8a+8 两个表达式构成了一个逗号表达式。若a a的初值为4 4,上述逗号表达式的运算过程是: 先求解a=5a=5* *6 6 得a a值为3030(表达式1的值)。 再求解a+8a+8 得30308 8为为3838
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西师范高等专科学校《信息技术在美术课件制作教学中的应用》2024-2025学年第一学期期末试卷
- 沈阳工业大学《船舶与海洋设计制造软件基础》2024-2025学年第一学期期末试卷
- 长沙环境保护职业技术学院《国际旅行实务》2024-2025学年第一学期期末试卷
- 渭南职业技术学院《生物饵料培养》2024-2025学年第一学期期末试卷
- 聊城大学《中国古代散文与语文教学》2024-2025学年第一学期期末试卷
- 吉林工业职业技术学院《地下工程通风与空调》2024-2025学年第一学期期末试卷
- 呼伦贝尔职业技术学院《环境微生物学》2024-2025学年第一学期期末试卷
- 广州商学院《信息分析基础》2024-2025学年第一学期期末试卷
- 萍乡卫生职业学院《酒店客户关系管理》2024-2025学年第一学期期末试卷
- 重庆五一职业技术学院《环境科学实验》2024-2025学年第一学期期末试卷
- 《合理利用网络作业设计方案-2023-2024学年初中道德与法治统编版》
- 政务公开工作培训
- JJF1059.1测量不确定度评定培训讲演稿
- 人教版新目标初中英语Go-for-it!单词大全(音标齐全-已反复校对-单词分类-便于识记)
- 医院感染管理培训课件:妇产科感染的防治措施
- 农村伪劣食品总结汇报
- 人体解剖学与组织胚胎学(高职)全套教学课件
- 展会现场管理方案
- 二年级上册语文教材解读-
- 舟山沈家门渔港案例详解
- 宫颈癌护理教学查房
评论
0/150
提交评论