C语言程序设计 课件 任务1.5 运算符与表达式_第1页
C语言程序设计 课件 任务1.5 运算符与表达式_第2页
C语言程序设计 课件 任务1.5 运算符与表达式_第3页
C语言程序设计 课件 任务1.5 运算符与表达式_第4页
C语言程序设计 课件 任务1.5 运算符与表达式_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计基础与实践模块一编程技术基础任务1.5运算符与表达式C语言程序设计基础与实践课程组04技能点拓展03技能点详解02技能点分析目录CONTENTS任务1.5运算符与表达式01问题引入05技能点检测一问题引入

计算机处理的基本对象是数据。变量和常量则是程序的最基本的数据形式,将它们用操作符(也称为运算符)连接起来,便构成了表达式。

在应用程序中,经常会对数据进行运算,为此,C语言提供了多种类型的运算符,即专门用于告诉程序执行特定运算或逻辑操作的符号。04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务1.5运算符与表达式二技能点分析1、了解运算符的基本类型;2、能够运用运算符完成运算。学习目标1.C语言中支持哪些种类的运算符?2.a++与++a有何区别?3.当由多个不同运算符和运算数组成较为复杂的表达式时,其运算符计算顺序如何确定?学期预习04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务1.5运算符与表达式三技能点详解——1算术运算符C语言中算术运算符有加“+”、减“

”、乘“*”、除“/”、求余(模)“%”、“++”、“

”7个,其中+、

、*、/、%是二元运算符,++、

是一元运算符。+、--、*、/都能对整数或实数进行运算。在同一级别运算时,按左结合规则进行。算术运算符的操作功能描述如表1.5.1所示,其中假设整型变量a的值为2,变量b的值为5。运算符描述实例+把两个操作数相加a+b将得到

7-从第一个操作数中减去第二个操作数a-b将得到

-3*把两个操作数相乘a*b将得到10/分子除以分母b/a将得到

2.5%取模运算符,整除后的余数b%a将得到

1++自增运算符,整数值增加

1a++或++a将得到

3--自减运算符,整数值减少

1a--或--a将得到

11)求余运算符%

求余运算符%只能对整型数据进行,若表1.5.1所示,5%2的值为1。

若在计算“a%b”时,如果a、b中至少有一个为负数,此时运算结果如何呢?C语言中规定:余数与a的符号相同,而绝对值不变。因此表达式5%3、5%-3、-5%3、-5%-3的值分别为2、2、-2、-2。三技能点详解——1算术运算符三技能点详解——1算术运算符2)++、--运算符++、--只能对整型变量进行运算,如表1.5.1所示,a为整型变量。++、--运算符可写在变量的前面或变量的后面,写在变量的前面称为前缀(或前置)运算符,写在变量的后面称为后缀(或后置)运算符,在使用前缀运算与后缀运算时要注意如下两点:(1)++a与a++单独构成表达式时,两者使用时没有区别;(2)++a与a++不是单独构成表达式时,前缀运算表示先加后用,后缀运算表示先用后加。三技能点详解——2关系运算符关系运算又称为比较大小运算,它有6个运算符:>、>=、<、<=、==、!=,它们的结合规则都是自左向右的。关系运算的结果为逻辑真或逻辑假,关系成立时为逻辑真(值为1),关系不成立时为逻辑假(值为0)。表1.5.2列出了各个关系运算符的功能描述与实例,其中假设a的值为2,b的值为5。运算符描述实例==检查两个操作数的值是否相等,相等为真,不等为假。(a==b)为假。!=检查两个操作数的值是否相等,不等为真,相等为假。(a!=b)为真。>

检查左操作数的值是否大于右操作数的值,如果是则条件为真。(a>b)为假。<

检查左操作数的值是否小于右操作数的值,如果是则条件为真。(a<b)为真。>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。(a>=b)为假。<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。(a<=b)为真。三技能点详解——3逻辑运算符C语言中逻辑运算符有:逻辑与“&&”、逻辑或“||”、逻辑非“!”。逻辑与表达式a&&b表示a与b中只要有一个条件不满足(值为0),其运算结果为0。逻辑或表达式a||b表示a与b中只要有一个条件满足(值为1),其运算结果为1。逻辑非表达式!a,当a为1时,结果为0,当a为0时,结果为1。逻辑运算真值表如表1.5.3所示。aba&&ba||b!a11110100100101100001表1.5.3逻辑运算真值表三技能点详解——3逻辑运算符

在C语言逻辑运算中,任何非0值都当作逻辑值1处理,因此表达式0.1||0的结果值为1。从逻辑与运算a&&b的真值表中,我们可以看出,只要a值为0,不管b值如何,其运算结果都为0,因此,在进行逻辑与运算时,只要计算a值为0,我们不需计算b值,这种情况,我们称之为逻辑与优化。同样,对于逻辑或运算a||b,只要a值为1,不需计算b值,此时表达式值恒为1,这种情况称之为逻辑或优化。三技能点详解——4位运算符位运算符作用于位,并逐位执行操作。位运算符有&、|、^、~、>>、<<等6个,表1.5.4列出了C语言中所有位运算符及其运算实例,其中假设变量a的值为26,变量b的值为15。三技能点详解——5赋值运算符简单赋值运算的一般形式为:变量=表达式其功能是将一个表达式的值赋给变量。如表达式:a=b+c该式读作将表达式b+c的值赋给a。其本意是改写变量a的值,而不是判断b+c与a是否相等。这里需要注意的是:C语言中的赋值运算符不能误看作为数学上的关系运算符——等于运算符。又如数学上表达式:a=a+5,是错误的表达式,但在C语言中这是正确的合法表达式,它是改写存储单元a中的内容,因为在C中,运算符“=”不是关系运算符,而是赋值运算符。三技能点详解——5赋值运算符运算符描

述实例=简单的赋值运算符,把右边操作数的值赋给左边操作数C=A+B将A+B的值赋给C+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数C+=A相当于

C=C+A-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数C-=A相当于

C=C-A*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数C*=A相当于

C=C*A/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数C/=A相当于

C=C/A%=求模且赋值运算符,求两个操作数的模赋值给左边操作数C%=A相当于

C=C%A<<=左移且赋值运算符C<<=2等同于

C=C<<2>>=右移且赋值运算符C>>=2等同于

C=C>>2&=按位与且赋值运算符C&=2等同于

C=C&2^=按位异或且赋值运算符C^=2等同于

C=C^2|=按位或且赋值运算符C|=2等同于

C=C|2三技能点详解——6杂项运算符表1.5.6列出了C语言支持的其他一些重要的运算符,包括sizeof和?:。运算符描述实例sizeof()返回变量的大小sizeof(a)将返回

4,其中

a是整数&返回变量的地址&a;将给出变量的实际地址*指向一个变量*a;将指向一个变量?:条件表达式如果条件为真

?则值为

X:否则值为

Y1)sizeof运算符sizeof表示计算变量或表达式占用的存储空间大小,即字节数。sizeof计算类型占用字节数的形式为:sizeof(类型)sizeof计算变量占用字节数的形式有两种:sizeof(变量)或sizeof变量三技能点详解——6杂项运算符2)条件运算符条件运算符是C语言中唯一的三元运算符,用符号?:表示,它带有3个操作数,其书写一般形式为:a?b:c其计算方法是先计算a,若a非0,则选择b作为表达式值,否则选择c作为表达式值,因此,条件运算又称为选择运算。例如:程序代码中有定义“inta=3,b=5,c;”则执行代码“c=a>b?a:b;”后的结果为c=5三技能点详解——7运算符优先级

前面已简单介绍了C语言中的每个运算符都有一定的优先级和结合规则,表1.5.6按运算符优先级从高到低列出各个运算符及其结合规则,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。

当由多个不同运算符和运算数组成较为复杂的表达式时,其运算符计算顺序按如下规则执行:(1)不同级别的运算符按运算符的优先级别确定计算顺序,优先级别高(优先级别数小)的运算符先计算,优先级别低(优先级别数大)的运算符后计算;(2)相同级别的运算符按结合规则确定计算顺序。如表达式3+4*(17-5)/(1+2)的计算顺序为:①左边括号运算(17-5),值为12,②右边括号运算(1+2),值为3,③左边乘法运算4*12,值为48,④右边除法运算48/3,值为16,⑤加法运算3+16,值为19。案例1.5.1算术运算编程实现两个整型变量的算术运算。/***********************************************内容简述:两个整型变量的算术运算***********************************************/#include

<stdio.h>voidmain(void){

inta=19;

intb=10;

intc;

printf("a=%db=%d\n",a,b);

c=a+b;printf("a+b=%d\n",c);c=a-b;printf("a-b=%d\n",c);c=a*b;printf("a*b=%d\n",c);c=a/b;printf("a/b=%d\n",c);c=a%b;printf("a%%b=%d\n",c);c=a++;//赋值后再加1,c为19,a为20printf("赋给c的值是%da的值是%d\n",c,a);c=a--;//赋值后再减1,c为20,a为19printf("赋给c的值是%da的值是%d\n",c,a); c=++a;//先加1后赋值,c为20,a为20printf("赋给c的值是%da的值是%d\n",c,a);c=--a;//先减1后赋值,c为19,a为19printf("赋给c的值是%da的值是%d\n",c,a);}三技能点详解——案例案例1.5.2关系运算测得甲乙的体温,通过编程判断两人是否发热(超过37.3℃)。/************************************************内容简述:判断两个数的大小关系***********************************************/#include

<stdio.h>

voidmain(void){

floatt=36.5;

floatT=37.3;

printf("测得甲的体温为:%.2f\n",t);

if(t<T){printf("体温小于37.3℃,甲没有发热\n");}

if(t>=T){printf("体温大于或等于37.3℃,甲发热\n");}

t=38.5;

printf("测得乙的体温为:%.2f\n",t);

if(t<T){printf("体温小于37.3℃,乙没有发热\n");}

if(t>=T){printf("体温大于或等于37.3℃,乙发热\n");}}三技能点详解——案例案例1.5.3逻辑运算编程实现两个量的三个逻辑运算。/********************************************************内容简述:

判断两个量的逻辑运算结果*******************************************************/#include

<stdio.h>

intmain(){

inta=5;

intb=20;

intc;

printf("a=%db=%d\n",a,b); c=a&&b;//a和b均为非0值,都为真,a&&b值为1 printf("a&&b的值为%d\n",c);

if(a&&b)//判断a和b两条件是否都为真{printf("a和b全为真\n");}c=a||b;//a和b均为非0值,都为真,a||b值为1 printf("a||b的值为%d\n",c);

if(a||b)//判断a和b两条件中是否至少有一个为真{printf("a和b至少有一个为真\n");}

a=0;//改变a和b的值b=10;

printf("a=%db=%d\n",a,b); c=a&&b;//a==0,为假,a和b不全为真,a&&b值为0 printf("a&&b的值为%d\n",c);

if(a&&b){printf("a和b全为真\n");}c=!(a&&b);//a==0,为假,a和b不全为真,a&&b值为0,!(a&&b)为1 printf("!(a&&b)的值为%d\n",c);

if(!(a&&b)){printf("a和b不全为真\n");}}三技能点详解——案例案例1.5.4位运算输出26与15的各种位运算结果/********************************************************内容简述:

位运算*******************************************************/#include

<stdio.h>

voidmain(void){

unsigned

inta=26;//26=00011010

unsigned

intb=15;//15=00001111

intc=0;

c=a&b;//00011010&00001111=00001010=10printf("Line1-c的值是%d\n",c);

c=a|b;//00011010|00001111=00011111=31printf("Line2-c的值是%d\n",c);

c=a^b;//00011010^00001111=00010101=21printf("Line3-c的值是%d\n",c);

c=~a;//~00011010=10011011=-27printf("Line4-c的值是%d\n",c);

c=a<<2;//00011010左移两位为01101000=104printf("Line5-c的值是%d\n",c);

c=a>>2;//00111100右移两位为00000110=6printf("Line6-c的值是%d\n",c);}三技能点详解——案例案例1.5.5赋值运算编程检验各种赋值运算符号的功能。/********************************************************内容简述:简单赋值与复合赋值运算*******************************************************/#include

<stdio.h>

voidmain(void){

inta=21;

intc;

c=a;printf("=运算符实例,c的值=%d\n",c);c+=a;//c=c+aprintf("+=运算符实例,c的值=%d\n",c);c-=a;//c=c-aprintf("-=运算符实例,c的值=%d\n",c);c*=a;//c=c*aprintf("*=运算符实例,c的值=%d\n",c);c/=a;//c=c/aprintf("/=运算符实例,c的值=%d\n",c);c=200;c%=a;//c=c%aprintf("%%=运算符实例,c的值=%d\n",c);c<<=2;//c=c<<2printf("<<=运算符实例,c的值=%d\n",c);c>>=2;//c=c>>2printf(">>=运算符实例,c的值=%d\n",c);c&=2;//c=c&2printf("&=运算符实例,c的值=%d\n",c);c^=2;//c=c^2printf("^=运算符实例,c的值=%d\n",c);c|=2;//c=c|2printf("|=运算符实例,c的值=%d\n",c);}三技能点详解——案例案例1.5.6杂项运算编程检验各种赋值运算符号的功能。/********************************************************内容简述:

杂项运算符的使用*******************************************************/#include

<stdio.h>

voidmain(void){

inta=4;

shortb;

doublec;

int*ptr;

/*sizeof运算符实例*/printf("整型变量a的大小=%lu\n",sizeof(a));printf("短整型变量b的大小=%lu\n",sizeof(b));printf("双精度实型变量c的大小=%lu\n",sizeof(c));

/*&和*运算符实例*/ptr=&a;//'ptr'现在包含'a'的地址printf("a的值是%d\n",a);printf("*ptr是%d\n",*ptr);

/*三元运算符实例*/a=10;b=(a==1)?20:30;printf("b的值是%d\n",b);b=(a==10)?20:30;printf("b的值是%d\n",b);}三技能点详解——案例案例1.5.7运算优先级输入两组整数,求出两组输入整数中较大整数的和。/********************************************************内容简述:求两组输入

温馨提示

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

评论

0/150

提交评论