C语言程序设计(微课版)ch4-运算符和表达式_第1页
C语言程序设计(微课版)ch4-运算符和表达式_第2页
C语言程序设计(微课版)ch4-运算符和表达式_第3页
C语言程序设计(微课版)ch4-运算符和表达式_第4页
C语言程序设计(微课版)ch4-运算符和表达式_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

运算符与表达式第4章

4.1算术运算符和算术表达式4.2自增、自减运算4.3位运算4.4赋值运算4.5关系表达式与逻辑表达式4.6条件表达式与逗号表达式第四章运算符与表达式4.1算术运算符和算术表达式

运算符表达式

+3+5、+3-5-2、-3*3*5

/3/2(结果为1)

3/2.0,3.0/2,3.0/2.0(结果为1.5)%(求余)

7%4(结果为3)-9%5(结果为-4)

9%(-5)(结果为4

2.0%3(错误,2.0不是整数)

字符以其ASCII码参加运算:

'a'+1为98'b'-'a'为1'8'-'0'为8a/10+a%10(如a=24,则结果为6)

(b%100)/10(如b=4321,则结果为2)例如:设a为两位整数,求其各位数字之和。又如:求一个整数b的十位上的数字。字符ASCII码字符ASCII码A65a97B66b98C67c99D68d100E69e101F70f102G71g103H72h104I73i105J74j106K75k107L76l108M77m109N78n110O79o111P80p112Q81q113R82r114S83s115T84t116U85u117V86v118W87w119X88x120Y89y121Z90z122字符ASCII码048149250351452553654755856957

若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是().122.02.5ABCD提交单选题1分

若已定义x和y为double类型,则表达式x=1,y=x+3/2.0的值是().122.02.5ABCD提交单选题1分算术运算中的类型转换自动转换强制类型转换

自动转换doublefloatlongunsignedintchar,short低高例如:2+’a’+1.52+97+1.599+1.599.0+1.5100.5强制类型转换

一般形式为:

(类型名)表达式例如:

(double)x(将x转换成double类型)(double)x/y(将x转换成double类型,再与y相除)(int)3.14%2(即3%2)

设f是单精度实型,i是双精度实型,则表达式10+'a'+i*f值的数据类型为().

int

float

double

不确定ABCD提交单选题1分如何求一个整数每一位上的数字注意整数相除取整比如1+1/2+1/3+1/4+……+1/n作业:将一个四位整数的个位与千位交换,百位与十位交换。1234—>43214.2自增、自减运算

如i=3;j=++i;j:4,i:4如i=3;j=i++;j:3,i:4运算符++--使用格式++ii的值先加1,后使用i++i的值先使用,后加1--ii的值先减1,后使用i--i的值先使用,后减1

执行下列语句后变量x和y的值是().y=10;x=y++;

x=10,y=10

x=11,y=11

x=10,y=11

x=11,y=10ABCD提交单选题1分

3+a++,若a的初值为6,则表达式值为?a的值为?9,79,610,710,6ABCD提交单选题1分

++x*y-z,若x,y,z的值分别为3,4,5,则表达式和x的值最后分别为?11,411,37,47,3ABCD提交单选题1分4.3位运算

种位运算符&按位与运算符|按位或运算符^按位异或运算符<<二进制左移运算符>>二进制右移运算符~按位取反运算符按位与运算(&)

当对应位均为1时,结果为1;否则为0。例如,12&10的运算如下:

12:00001100&10:00001010_________________

结果:00001000作用:保留某一位,用1和相应位进行与运算。按位或运算(|)

对应位均为0时,结果为0;否则结果为1。例如:

0123:01010011

|014:000011000123|014:01011111作用:指定某一位的值为1。按位异或运算(^)

当对应位相同时,结果为0;否则为1。例如:00110011

^1100001111110000

按位取反运算(~)

使每一位上的0变1;1变0。例如:~0115是将八进制数115按位求反。即:

~01001101

_______________

结果:10110010左移运算(<<)

例如:

chara=6,b;b=a<<2;

用二进制数如下:

a:00000110(a=6)b=a<<2:00011000(b=24)返回目录

short

a=-071400,b;b=a>>2;

符号位↓

a的二进制原码表示:1111001100000000a的二进制反码表示:1000110011111111a的二进制补码表示:1000110100000000(机内存储形式)b=a>>2:1110001101000000(b的二进制补码表示)b的二进制反码表示:1110001100111111b的二进制原码表示:1001110011000000b的八进制数:-016300右移运算(>>)

右移时,右端(低位)移出的二进制数舍弃;左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。若x=2,y=3则x&y的结果是().

0

2

3

5ABCD提交单选题1分

若a=1,b=2则a|b的值是().0123ABCD提交单选题1分

在位运算中,操作数每左移一位,其结果相当于().

操作数乘以2

操作数除以2

操作数除以4

操作数乘以4ABCD提交单选题1分变量名=表达式;4.4赋值运算

变量名=表达式

右结合赋值表达式赋值语句如a=3b=2*a+10如a=3;c=b=a+3;赋值时数据类型的转换

当左右类型不同时,系统自动转换。例如:

intn;n=3.1415;/*n的值为3*/

复合赋值运算+=-=*=/=%=<<=>>=&=^=|=a+=3a=a+3x*=y+8x=x*(y+8)x/=2*y-10x=x/(2*y-10)a&=ba=a&b

设a=12,且a定义为整型变量.执行语句a+=a-=a*=a;后a的值为().

12

144

0

132ABCD提交单选题1分4.5关系表达式与逻辑表达式关系运算符>(大于)>=(大于等于)<(小于)<=(小于或等于)==(等于)!=(不等于)例如:a>ba+b>=b+c关系表达式成立,其值为1关系表达式不成立,其值为04.5.1关系运算

【例4.1】分析下面程序的运行结果。#include<stdio.h>intmain(){floatx,y=0.6;y=y*11;x=6+0.6;if(x==y)printf("OK,x==y");elseprintf("NO,x!=y");return0;}程序运行结果:NO,x!=y#include<math.h>fabs(x-y)<1e-5

下列运算符中是C语言关系运算符的是().

~

!

&

!=ABCD提交单选题1分运算结果:用1表示“真”,用0表示“假”。

在逻辑运算中,将非0值视为真、将0视为假。逻辑运算符!(逻辑非)&&(逻辑与)||(逻辑或)逻辑表达式

!aa&&ba||b4.5.2逻辑运算

注意:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只有在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。(1)a&&b则a、b的值分别为0、1(2)a||b则a、b的值分别为2、1inta=1,b=1;--a&&++binta=1,b=1;++a||++b

在C语言中,能代表逻辑值“真”的是().

True

大于0的数

非0整数

非0的数ABCD提交单选题1分

已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是().

0

语法错1

"假"ABCD提交单选题1分

intx=2,y=3,z=4;则表达式x+y>z&&y==z的值为().0123ABCD提交单选题1分4.6条件表达式与逗号表达式

【例4.3】用条件表达式求解下列问题。(1)求两个变量a、b的最大值。解s=(a>b)?a:b;(2)求三个变量a、b、c的最大值。解s=(s=a>b?a:b)>c?s:c;(3)对字符变量ch,若为小写字母,则改为大写字母,其余字符不变。解

ch=(ch>=’a’&&ch<=’z’)?(ch-32):ch;(4)输出整型变量x的绝对值。解(x>0)?printf(“%d”,x):printf(“%d”,-x);条件运算符

?:

条件表达式表达式1?

表达式2

:

表达式34.6.1条件表达式

【例4.3】任意输入三个整数,按从大到小输出。#include<stdio.h>intmain(){inta,b,c,m,n,k;scanf("%d%d%d",&a,&b,&c);m=(m=a>b?a:b)>c?m:c;/*将a、b、c中的最大数赋给m*/n=(n=a<b?a:b)<c?n:c;/*将a、b、c中的最小数赋给n*/k=a+b+c-m-n;/*将a、b、c中的中间数赋给k*/printf("%d%d%d\n",m,k,n);/*从大到小输出三个数*/return0;}程序运行情况:3-59↙93-5

经过以下语句定义后,表达式z+=x>y?x:y的值为().intx=1,y=2,z=3;

2365ABCD提交单选题1分例如:(1)a=2+3,4*5;(2)inta=2,c;c=(b=a++,a+2);(3)inta=2,c;c=b=a++,a+2;逗号运算符

逗号表达式表达式1,表达式2,……,表达式n4.6.2逗号表达式

假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是().7685ABCD提交单选题1分4.1算术运算符和算术表达式:+-*/%4.2自增、自减运算:++

--4.3位运算:&

温馨提示

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

评论

0/150

提交评论