简单的算术运算和表达式(教学).pptx_第1页
简单的算术运算和表达式(教学).pptx_第2页
简单的算术运算和表达式(教学).pptx_第3页
简单的算术运算和表达式(教学).pptx_第4页
简单的算术运算和表达式(教学).pptx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

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、基本的算术运算符 + 、 加号运算符 、 减号运算符 、 乘号运算符 、 除号运算符 、 模运算符,或叫作求余运算符,说 明,如果参加、运算的两个数中有一个数为实数,则结果是double型,因为所有实数都 按double

2、型进行运算。 、模运算符,或叫作求余运算符。 注意:% 运算要求运算符两的运算对象均为整型,2、算术表达式和运算符的优先级与结合性,所谓算术表达式即:用算术运算符和括号将运算对象连接起来、符合C语法规则的式子。其中运算包括常量、变量、函数等。 优先级 结合性,有关结合性的问题将会在以后进行详细的说明。 参见附录C C运算符的优先级与结合性,3.1.2 复合运算符,设变量a都被定义为整型变量,并给变量a赋了初值10。这句话要用程序表示如下左图所示。 若要想将变量a的值加20,其表达式的写有两种:使用一般形式(如下中图所示);使用复合运算符方式(如下右图所示),int a, b; a = 10;

3、或: int a = 10, b;,a = a + 20,a += 20,这两个表达式作用相同,其他算术运算符的复合用法依次类推,等价于,3.1.3 自增、自减运算符,所谓增、自减的作用是使变量的值增1或减1。 i +, i - 在调用i之后,再使i的值加或减1 + i , - i 在调用i之前,先使i的值加或减1。 粗略地看,i+和+i 的作用均相当于i = i + 1,但+i和i+不同之处在于: +i是先执行i = i + 1后,再使用i的值; 而i+是先使用i的值后,再执行i = i +1。,int main(void) int i = 3; printf(“first i= %d”,

4、+ i); printf(“second i= %d”, i+); printf(“third i= %d”, i); return 0; ,编辑、编译、链接此程序,并运行它,从输出结果分析和理解+i和i+的区别。,有关自增、自减的说明, 自增运算符和自减运算符 只能用于变量。 + 和-的结合方向是“自右至左”。,有关自增、自减的补充 1,int main(void) int x,i=3; x=(i+)+(i+)+(i+); printf(x=%d i=%d,x,i); 结果为:x=9 i=6,int main(void) int x,i=3; x=(+i)+(+i)+(+i); printf

5、(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了。,有关自增、自减的补充 2,main() int i=3; printf(%d,(i+)+(i+)+(i+); 结果为:12,main() int i=3; printf(%d,(+i)+(+i)+(+i); 结果为:15,以上为自增在函数参数中的运算结果。 以上两程序都在第一个printf后再一句printf(“i=

6、%d”,i);则显示i=?,3.2 宏常量与宏替换,另外可用一个标识符代表一个常量,其定义方式如下: #define PRICE 30 以后在程序中凡遇到PRICE都代表30。 PRICE就称为符号常量(宏常量)。在程序中将PRICE替换成30的这个动作叫“宏替换”。,3.3 const 常量,使用宏常量的最大问题是,宏常量没有数据类型。编译器对宏常量不进行类型检查,只进行简单的字符替换,字符替换时极易产生意想不到的错误。 那么可否声明具有某种数据类型的常量呢?在这里将介绍const常量。 在声明语句中,只要将const类型修饰置于类型说明之前,就可将类型说明后的标识符声明为具有该类型的con

7、st常量了。,由于编译器将其放在只读存储区,不允许在程序中改变其值,因此const常量只能在定义时赋值。 例如: const double PAI = 3.1415926; 声明了名为PAI的实型const常量,其值为3.1415926。 具体理解参见教材P34,高 double float long 低 int char, short,图中横向向左的箭头表示必定的转换,如字符数据必定先转换为整数,float型数据在运算时一律先转换成双精度型,以提高运算精度。,即使是两个float型数据相加,也先都化为double型,然后再相加。 纵向的箭头表示当前运算对象为不同类型时转换的方向。例int 型

8、与double型数据进行运算,先将int 型的数据转换成double,然后再进行运算。,3.4 自动类型转换与强制类型转换,类型转换,如果赋值运算符两侧的类型不一致,但都是数值或字符型时,在赋值时要进行类型转换。 实型数据赋给整型变量 整型数据赋给单、双精度变量 double型数据赋给float变量 字符型数据赋给整型变量 int、long型数据赋给一个char变量,注意:这里指的是系统自动进行转换(需解释)。,强制类型转换运算符,可以利用强制类型转换运算符将一个表达式转换成所需类型。例如: (double)a (将a转换成double类型) (int)(x+y) (将x+y的值转换成整型)

9、(float)(5%4) (将54的值转换成float型) 其一般形式为:(类型名)(表达式) 注意:表达式应该用括号括起来。如果写成 (int)x+y 则只将x转换成整型,然后与y相加。,说 明,在强制类型转换时,得到一个所需要类型的中间变量,原来的变量的类型未发生变化。如: (int) x (不要写成int(x)如果x原指定为float型,进行强制类型运算后得到一个int型的中间变量,它的值等于x的整数部分,而x类型不变(仍为float型)。,例 强制类型转换 int main(void) float x; int i; x = 3.14; i = (int)x; printf(“x=%f

10、,i=%d”,x,i); return 0; 运行结果: x=3.149000 i=3,X类型仍为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,注意:当在程序中使用标准的数学函数据时,程序中要挂上数学库的头文件。如下所示:,逗号运算符和逗号表达式,C语言提供一种特殊的运算符逗号运算符。用它将两个表达式连接起来。如:3+6,7+8。这种表达式叫作逗号表达式,其一般形式为: 表达式1,表达式2 逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号的值是表达式2的值。 例如:“56,79”的值为16。,从附录C中查出,逗号运算符的优先级别最低,而结合方向是“自左至右”(

温馨提示

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

评论

0/150

提交评论