第2章 运算符与表达式

第2章  运算符与表达式
第2章  运算符与表达式

第2章运算符与表达式

考核知识点:

●C语言运算符的种类、运算符优先级和结合性

●不同类型数据间的转换与运算

●C语言表达式的各种类型和求值规则

●位运算符的含义及使用

●简单的位运算

重要考点提示:

●运算符的优先级及表达式的求值规则

●复合的赋值表达式的使用,自增和自减运算符及逻辑运算符的使用

●简单的位运算操作

2.1 C语言运算符简介

C语言的运算符范围很宽,几乎把所有的基本操作都作为运算符处理,具体运算符见表

2-1. C语言运算符表

运算符。

二、运算符的结合性和优先级

1.在C语言的运算符中,所有的单目运算符、条件运算符和逻辑运算符及其扩展运算符,结合方向都是从右到左,其余运算符的结合方向是从左到右。

2.各类运算符优先级的比较:

初等运算符>单目运算符>算术运算符(先乘除后加减)>关系运算符>逻辑运算符(不包括“!”)>条件运算符>赋值运算符>逗号运算符

说明:以上优先级别由左到右递减,初等运算符优先级最高,逗号运算符优先给最低。

三、强制类型转换运算符

可以利用强制类型转换符将一个表达式转换成所需类型,其一般形式为:

(类型名)(表达式)

例如:(char)(x+y);,将(x+y)的值强制转换成为字符型。

(double)(m*n);,将(m*n)的值强制转换为double类型。

小提示:表达式应用括号括起来,如果写成(char)x+y;,则表示只将x转化为字符型,然后与y相加。

4.逗号运算符与逗号表达式

用逗号运算符将几个表达式连接起来,例如a=b+c,b=a*a,c=a+b,称为逗号表达式。

一般形式:

表达式1, 表达式2,表达式3,…,表达式n

逗号表达式的求解过程是:先求解表达式1,然后求解表达式2,直到表达式n的值。整个表达式的值就是表达式n的值。需要注意的是,逗号运算符是所有运算符中级别最低的。

2.2 算术运算符和算术表达式

1.基本的算术运算符

(1)+(加法运算符或正值运算符,如2+6)

(2)-(减法运算符或负值运算符,如6-3)

(3)*(乘法运算符,如2*6)

(4)/(除法运算符,如2/6)

(5)%(模运算符或称求余运算符,%两侧均应为整型数据,如2%6的值为2)

需要说明的是:两个整数相除的结果为整型,如5/3的结果是值1,舍去小数部分,如果参加+、-、*、/运算的两个数中有一个数为实数,则结果是double类型。

2.算术表达式和运算符的优先级与结合性

算术表达式是用算术运算符和括号将运算量(也称操作数)连接起来的、符合C语言语法规则的表达式。运算对象包括函数、常量和变量等。

在计算机语言中,算术表达式的求值规律与数学中的四则运算的规律类似,其运算规则和要求如下。

(1)在算术表达式中,可使用多层括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算表达式的值。

(2)在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符优先级相同,则按运算符的结合方向进行运算。

(3)如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制转换,使两者具有相同类型,然后进行计算。

3.自增自减运算符

作用:使变量的值增1或减1。

如:++i,--i(在使用i之前,先使i的值加1、减1)。

i++,i--(在使用i之后,使i的值加1、减1)。

小提示:

(1)只有变量才能用自增运算符(++)和自减运算符(--),而常量或表达式不能用,如10++或(x+y)++都是不合法的。

(2)++和—的结合方向是“自右向左”,如-i++,不的左边是负号运算符,右边是自增运算符,负号运算符和自增运算符都是“自右向左”结合的,相当于-(i++)。

在循环语句中常用到自增(减)运算符,在指针中也常用到该运算符,考生要弄清楚“i++”和“++i”及“i--”和“--i”的区别,防止用错。

2.3 赋值运算符和赋值表达式

一.赋值运算符和赋值表达式

赋值符号“=”就是赋值运算符,作用是将一个数据赋给一个变量或将一个变量的值赋级另一个变量,由赋值运算符组成的表达式称为赋值表达式。一般形式为:

变量名=表达式

在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内在中当前的数据就是最后一次所赋值的那个数据。

2.复合赋值运算符

在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符是:+=,-=,*=,/=,%=。

小提示:两个符号之间不可以有空格,复合赋值运算符的优先级与赋值运算符的相同。表达式n+=1等价于n=n+1,作用是取变量n中的值增1再赋给变量n,其他复合的赋值运算符的运算规则依次类推。

如求表达式“a+=a-=a*a”的值,其中a的初值为12。

步骤:(1)先进行“a-=a*a”运算,相当于a=a-a*a=12-12*12=-132

(2)再进行“a+=-132”运算,相当于a=a+(-132)=-132-132=-264

3.赋值运算中的类型转换

如果赋值运算符两侧的类型不一致,在赋值前系统将自动先把右侧表达式求得的数值按赋值号左边变量的类型进行转换(也可以用强制类型转换的方式),但这种转换仅限于某些数据之间,通常称为“赋值兼容”。对于另一些数据,例如,后面将要讨论的地址值,就不能赋给一般的变量,称为“赋值不兼容”。常用的转换规则如下:

(1)当实型数据赋值给整型变量时,数值不变,但以浮点数形式存储到实型变量中。

如int x;,执行“x=5.21;”后,x的值为5。

(2)当整型数据赋值给实型变量时,数值不变,但以浮点数形式存储到实型变量中。

如float x=45;

输出x的结果为45.00000。

(3)当double类型数据赋值给float型变量时,取其前面的7位有效数字,存放到float 型变量的存储单元中,这时数值可能溢出。

(4)当字符型数据赋值给整型变量时,由于整型就是占两个字节,而字符只占一个字节,只需将字符数据(8位)放到整型变量的低8位中,对该整型变量最高位进行符号扩展,其他位补零。

(5)当整型、短整型、长整型数据赋值给一个char类型变量时,将其低8位原封不动地送到char类型变量中(即截断)。

2.4 位运算

C语言提供6种位运算符,见表2-2

表2-2 位运算符

(2)运算量只能是整型或字符型数据,不能为实型数据。

【例1】下面程序的输出结果是。

#include

main()

{

char x=040;

printf(“%d\n”,x=x<<1);

}

例题解析:左移运算是每移一位数值放大一倍,x为八进制数的40,即十进制的32,程序是以十进制方式输出移位后的x,等于64。实际上,按二进制展开后刀可得到正确结果。八进制的40转换成二进制数为00100000,再按题意左移一位后得到01000000,最后按printf 语句中的“%d”格式输出其十进制形式为64.

【例2】设二进制数a是00101101,若通过异或运算a^b使a的高4位取反,低4位不变,则二进制数b是.

例题解析:异或运算常用来使特定位翻转,只要使需要翻转的位与1进行异或操作就可以了,因为原数值为1的位与1进行异或运算得0,原数中为0的与1进行异或运算结果得1。而与0进行异或的位将保持原值。异或运算还可用来交换两个值,不用临时变量。如int a=3,b=4;,想将a与b的值互换,可用职下语句实现:

a=a^b;

b=b^a;

a=a^b;

所以本题的答案为:11110000。

【例3】位运算符& | ^ ~ << >>按优先级从高到低排列的顺序是^ ~ << >> & ^ |

一、选择题

1、以下程序的输出结果为()。

#include

main()

{

int i=4,a;

a=i++;

printf(“a=%d,i=%d”,a,i);

}

A.a=4,i=4 B.a=5,i=4 C.a=4,i=5D.a=5,i=5

2、在C语言中,要求参加运算的数必须是整数的运算符是()。

A.% B./ C.!D.**

3、下述程序的输出结果是()。

#include

void main()

{

char a=3,b=6;

char c=a^b<<2;

printf(“\n%d”,c);

}

A.27B.10 C.20 D.28

4、若已定义x和y为double类型,则表达式“x=1,y=x+3/2”的值是()。

A.1 B.2 C.2.0D.2.5

5、若变量已正确定义并赋值,符合C语言语法的表达式是()。

A.a=a+7; B.a=7+b+c,a++C.int(12.3/4) D.a=a+7=c+b 6、若a为整型变量,则以下语句()。

a=-2L;

printf(“%d\n”,a);

A.赋值不合法B.输出值为-2C.输出为不确定值D.输出值为2 7、下述语句的输出为()。

int m=-1;

printf(“%d,%u,%0”,m,m,m);

A.-1,-1,-1 B.-1,32767,-177777

C.-1,32768,177777 D.-1,65535,177777

8、若k为int型变量,则以下语句()。

k=8567;

printf(”||%-06d|\n”,k);

A.输出格式描述不合法B.输出为|008567|

C.输出为|8567|D.输出为|-8567|

9、已知字符A的ASCII码值是65,以下程序()。

#include

main()

{

char a=?A?;

int b=20;

printf(“%d,%o”,(a=a+1,a+b,b),a+?a?-…A?,b);

}

A.表达式非法,输出零或不确定值

B.因输出项过多,无输出或输出不确定值

C.输出结果为20,141

D.输出结果为20,1541,20

10、对于条件表达式(M)?(a++):(a--),其中的表达式M等价于()。

A.M==0 B.M==1 C.M!=0D.M!=1

11、在x值处于-2~2,4~8时值为“真”,否则为“假”的表达式是()。

A.(2>x>-2)||(4>x>8)

B.!(((x<2)||(x>-2)&&((x<=4)||(x>8))

C.(x<2)&&(x>-2)&&(x>4)&&(x<8)

D.(x>-2)&&(x>4)||(x<8)&&(x>2)

12、已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果为()。#include

main()

{

unsigned int a=32,b=66;

printf(“%c\n”,a|b);

}

A.66 B.98 C.b D.B

13、设有定义,char a,b;若想通过a&b运算保留a的第三位和第6位的值,则b的二进制数应是()。

A.00100100B.11011011 C.00010010 D.011100010

14、若有定义:int x=3,y=2;float a=2.5,b=3.5;下面的表达式的值为

(x+y)%2+(int)a/(int)b

A.1.0 B.1C.2.0 D.2

15、若x和n均是整数,且x的初值为12,n的初值为5,则执行下面表达式后x的值为()。x%=(n%=2)

A.0B.1 C.2 D.3

16、假设所有变量均为整数,则表达式(a=2,b=5,a++,b++,a+b)的值为()。

A.7 B.8 C.9D.10

17、下列程序的输出结果是()。

#include

main()

{

double d=3.2;

int x,y;

x=1.2;

y=(x+3.8)/5.0;

printf(“%d\n”,d*y);

}

A.3 B.3.2 C.0D.3.07

18、设int x=1,y=1;表达式(!x||y--)的值是()。

A.0 B.1C.2 D.-1

19、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()。

A.1 B.2 C.2.0D.2.5

20、若变量a, i已正确定义,且i已正确赋值,则合法的语句是()。

A.i=int(a) B.++i;C.a=a++=5; D.a=int(i);

21、若执行以下程序段后,c3的值为()。

int c1=1,c2=2,c3;

c3=1.0/c2*c1;

A.0B.0.5 C.1 D.2

22、如下程序的运行结果是()。

#include

main()

{

int y=3,x=3,z=1;

printf(“%d %d\n”,(++x,y++),z+2);

}

A.3 4 B.4 2 C.4 3 D.3 3

23、能正确表示逻辑关系“a ≥10或a ≤0”的C 语言表达式是( )。 A .a ≥10 or a ≤0 B .a>=0|a<=10 C .a>=10&&a<=0

D .a>=10||a<=0

24、若变量x 、y 、z 均为double 类型且已婚正确赋值,不能正确表示z

y x 的C 语言表达

式是( )。

A .x/y*z

B .x*(1/(y*z))

C .x/y*1/z

D .d/y/z

25、设x 、y 、t 均为int 型变量,则执行语句:x=y=3;t=++x||++y ;后,y 的值为( )。 A .不定值

B .4

C .3

D .1

25、设a 、b 、c 、d 、m 、n 均为int 型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n 的值为( )。 A .0 B .1 C .2 D .3

26、假定w 、x 、y 、z 、m 均为int 型变量,有如下程序段 w=1;x=2;y=3;z=4;

m=(w

27、下列程序的输出结晶是( )。 main() {

int a=0,b=0,c=0;

if (++a>0||++b>0) ++c ;

printf(“\na=%d ,b=%d ,c=%d ”,a ,b ,c); }

A .a=0,b=0;c=0

B .a=1,b=1;c=1

C .a=1,b=0;c=1

D .a=0,b=1;c=1 28、以下程序的输出结果是( )。 #include

main() {

int a=5,b=4,c=6,d;

printf(“%d\n ” ,d=a>b?(a>c?a:c):(b)); } A .5

B .4

C .6

D .不确定

29、在C 语言中,如果下面的变量都是int 类型,则输出的结果是( )。 sum=pad=5;pad=sum++,pad++,++pad ; printf (”%d\n ”,pad ); A .7 B .6 C .5 D .4

30、以下程序的输出结果是( )。 #include main() {

int i=010,j=10;

printf(“%d ,%d\n ”,++i ,j--);

}

A .11,10

B .9,10

C .010,9

D .10,9

31、已知int i ;float f ;,正确的语句是( )。

A .(int f)%i ;

B .int (f)%i ;

C .int (f%i);

D .(int)f%i ;

32、已知int j ,i=1;执行语句j=-i++;后,j 的值是( )。

A .1

B .2

C .-1

D .-2

33、已知int a=4,b=5;则执行表达式a=a>b 后,变量a 的值为( )。 A .0 B .1

C .4

D .5

34、C 语言中,下列运算符的操作数必须是int 类型的运算是( )。

A .%

B ./

C .--

D .++

35、判断char 类型数据c1是否为大写字母的最简单且正确的表达式为( )。 A .?A ?<=c1<=?Z ? B .(c1>=?A ?)&(c1<=?Z ?) C .(?A ?<=c1)and(…Z ?>=c1) D .(c1>=?A ?)&&(c1<=?Z ?) 36、已知各变量的类型说明如下: int k,a,b ;

unsigned long w=5; double x=1.42;

则以下不符合C 语言语法的表达式是( )。 A .x%(-3) B .w+=-2 C .k=(a=2,b=3,a+b) D .a+=a-=a*(a=3)

二、填空题

1、若i 为int 整型变量且赋值为6,则运算i++后表达式的值是 6 ,变量i 的值是 7 。

2、条件“20

3、设二进制a 是00101101,若想通过异或运算a^b 使a 的高4位取反,低4位不变,则二进制数b 应是 11110000 。

4、下面程序的输出结果是 18 。 #include main() {

int x=023;

printf(“%d\n ”,--x);

}

5、请写出以下数学式的C 语言表达式 sin(a*π/180)/(b*c ) 。

c

b a *)sin(

6、对以下数学式,写出3个与a/c*b 等价的C 语言表达式 a*b/c 、 b*a/c 、 b/c*a 。

7、若a 是int 型变量,则执行表达式a=2.5/3%3后a 的值为 2 。

8、若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值为

10 ,n的值为 6 。

9、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为8.000000 。

10、表达式pow(2.8,sqrt(double(x)))值的数据类型为double型。

11、若a是int型变量,则表达式(a=4*5,a*2),a+6的值是26 。

12、若有定义int m=5,y=2;,则执行表达式y+=y-=m*=y后y的值是-16 。

13、已知int y;float x=-3;执行语句y=x%2;后,变量y的值为语句本身是错误的。

14、已知int a=15,b=240;则表达式(a&b)&b||b的结果为 1 。

15、表达式8.0*(1/2)的值为0.0 。

16、表达式3&4的值为0 。表达式3|4的值为7 。表达式3&&4的值为

1 。

C语言第三章表达式与运算符笔记

3.1概述 1.C语言表达式:用C语言运算符将常量、变量、函数调用连接起来的有意义的式子。.C语言的表达式为算术表达式、赋值表达式、逗号表达式、条件表达式、关系表达式和逻辑表达式。 2.表达式的值的类型取决于参与运算的数据的类型。 3.关系运算表达式成立,则结果为1,代表“真”,否则结果为0,代表“假”。4.运算符按参与运算的对象个数可以分类:单目运算符、双目运算符和三目运算符。 3.2算术运算符与算术表达式 1.除法运算:当两个操作数都是整型时,除法视为整除,运算结果舍去小数部分,只保留整数部分。 2.取模运算(求余):运算结果为一个整型,这个数是整除运算的余数,符号与被除数符号相同。例如:8%3的结果是3,8%(-5)的结果是3。 3.取负运算(单目运算),即只有一个操作数参与运算。 4.注意:’\%’与’%%’都相同于显示% 5.算术运算符的优先级:括号、函数调用、取负、*/%、+- 6.结合性:从左至右。 3.3其他运算符的应用 3.3.1赋值运算符和赋值表达式 1.一般形式:变量赋值运算符表达式例如:a=5+10 2.赋值表达式的计算过程:首先计算表达式的值,然后将该值赋给左侧的变量。 3.复合的赋值运算:+=,-=,*=,/=,%=等例如:a+=b等价于a=a+b 4.说明:(1)赋值号左边只能是变量,不允许出现常量、函数调用和表达式。 (2)赋值表达式中的“表达式”,又可以是另一个赋值表达式。 (3)当赋值号两边的数据类型不同时,一般由系统自动进行类型转换。

其原则是,赋值号右边的数据类型转换成与左边的变量相同的数据类型。 3.3.2自增自减运算符 1.功能:自增、自减运算符的作用是使变量的值增1或减1。 2.当自增、自减运算符的前置(在变量之前)变量本身先自增(或自减),然后再参与运算; 3.当自增、自减运算符的后置(在变量之后)变量先参与运算,然后变量本身再自增(或自减)。 注:自增、自减运算符只能用于整型变量,不能用于常量或表达式。 4.-i++相当于-(i++) 从右至左的右结合性 5.i+++j相当于(i++)+j 3.3.3条件运算符和条件表达式 1.一般形式:表达式1?表达式2:表达式3 2.条件表达式的执行过程:首先计算表达式1,如果非0(真)则计算表达式2,表达式2的值作为条件表达式的值;如果表达式1的值为0(假),则计算表达式3,表达式3的值作为条件表达式的值。 3.3.4逗号运算符和逗号表达式 1.一般形式:表达式1,表达式2,……,表达式n 2.逗号表达式的计算过程是:先计算表达式1,再计算表达式2,依次计算直到表达式n,表达式n,表达式n的值是整个逗号表达式的值。 3.3.5 sizeof运算符 1.一般形式:sizeof(类型名或变量名) 类型名可以是基本类型名,也可以是其他的构造类型名 2.功能:sizeof运算给出指定类型在内存中所占的字节数。 数学函数 1.fabs(x) 求x的绝对值

第三章 运算符和表达式

第三章运算符和表达式 3.1 运算符和表达式概述 使用运算符可以对运算对象(包括常量和变量)进行计算以得到计算结果。用运算符将运算对象连接成一个符合C语言语法规则的式称为表达式。另外,C语言中的表达式是可以嵌套的,即简单表达式经过运算符连接后还可以形成更为复杂的表达式。 根据运算符所连接的运算对象(操作数)的个数,可以将C语言中的运算符分为三类: (1) 单目(一元)运算符:只连接一个操作数的运算符。 (2) 双目(二元)运算符:带有两个操作数的运算符。 (3) 三目(三元)运算符:同时对三个操作数进行计算的运算符。 C语言中的表达式可以分为三类: (1) 单个常量或者单个变量是最简单的表达式。 (2) 带有运算符的表达式。 (3) 函数调用。 任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符和运算结果是运算的三大要素。 3.2 算术运算符和算术表达式 一、基本算术运算符和简单算术表达式 1. 基本算术运算符 C语言为用户提供的基本算术运算符包括:+(加)、-(减)、*(乘),/(除)、%(求余),这些运算符都是双目运算符,也即在生成算术表达式的时,基本算术运算符左右两侧都必须出现运算对象。 2. 简单算术表达式 当用基本算术运算符去连接常量或者变量时,就形成简单算术表达式。简单算术表达式的基本形式:data1 op data2。data1和data2表示某个常量或者变量,op代表上述5个基本算术运算符之一。假设有变量定义:int a=20,b=-5;则a+b、a-b、a*-2、20/-b、20%6、a%b等都是简单算术表达式。 3. 基本算术运算符使用说明 (1) +、-、*,/既可以连接整型数据,也可以连接实型数据。当参与这4个运算符的运算对

第三章。运算符和表达式2、分支结构

Top 1.运算符和表达式-2 2.分支结构 1. 运算符和表达式-2 1.1. 赋值运算 1.1.1. 使用“=”进行赋值运算 “=”称为赋值运算符,用于对变量赋值。关于赋值运算符,除了将右边的表达式计算出来赋给左边以外还具备如下特点:赋值表达式本身也有值,其本身之值即为所赋之值。示例代码如下所示: 1.int num =18, index; 2.System.out.println(index = num %5);// 结果为:3,赋值表达式本身也有值 3.System.out.println(index);// 结果为:3 4.int a, b, c; 5. a = b = c =100; 6.// c=100 整个表达式的值为100,将其赋值给b,同样b=(c=100)整个表达式 的值也为100,然后有将这个值赋给了a,所以a 的值也是100。 1.1. 2. 使用扩展赋值表达式 在赋值运算符”= ”前加上其它运算符,即为扩展赋值运算符,其效率高于赋值运算符,推荐使用,扩展赋值运算符如下图- 5所示:

图- 5 1.2. 字符连接运算 1.2.1. 使用“+”进行字符串连接 “+”除了可以进行算术运算以外,还可以实现字符串的连接,同时可以实现字符串与其他数据类型的“相连”。 当+ 号作用于两个数字类型变量时,是在进行算术运算。 当+ 号两边的变量有一个是字符串类型,即””括起来的时候,则其进行的是字符串的连接,连接后的结果为字符串类型。示例代码如下所示: 1.int a =100; 2.String msg ="a="+ a; 3.System.out.println(msg);//a=100,字符串拼接 4.msg =""+100+200; 5.System.out.println(msg);//结果为: 100200,””+100,为字符串100再拼 上200为100200 6.msg =100+200+""; 7.System.out.println(msg);//结果为:300,100+200为算术运算结果为300, 再加上””为300 1.3. 条件(三目)运算 1.3.1. 使用条件(三目)运算符

第三章 数据类型、运算符与表达式 练习与答案

第三章数据类型、运算符与表达式 [试题分类]: 1.{ 下列程序执行后的输出结果是________________。 #define MA(x) x*(x-1) mian() \{int a=1,b=2; pirntf(“%d\n”,MA(1+a+b));\} } 试题编号:E54749 答案:8 题型:填空题 2.C语言中基本数据类型包括整型、实型、字符型。() 试题编号:E57279 答案:正确 题型:判断题 3.{ 要得到下列结果: a, b A, B 97,98,65,66 请按要求完善程序。 main( ) \{char c1,c2; c1=’a’;c2=’b’; printf(“%c,%c ”,c1,c2); printf(“%c,%c\n”, ___); printf(“%d,%d,%d,%d\n”,_c1,c2,c1-32,c2-32); \} } 试题编号:E55118 答案:c1-32,c2-32 题型:填空题 4.能表示“整型变量x的绝对值小于5”的表达式是___。(注意本题答案中规定不得使用系统函数)。 试题编号:E55113 答案:(x<5)&&(x>-5) 题型:填空题

5.设有定义"int a,b=10;",则执行语句"a=b<<2+1;"后a的值___。试题编号:E55111 答案:80 题型:填空题 6.设有定义"int x=4;",则表达式"x+=x*=x+1"的值是___。 试题编号:E55110 答案:40 题型:填空题 7.有下列运算符:>>、&&、|、!=,优先级别最高的是___。 试题编号:E55109 答案:>> 题型:填空题 8.用十进制来表示无符号短整型数据的数值范围是___。 试题编号:E55108 答案:0~65535 题型:填空题 9.{ 设有以下变量说明语句 char w='A'; int x=10; float y=20; double z=30; 则执行赋值语句 x=w*x+z-y; 之后x所得值的数据类是___。 } 试题编号:E55106 答案:int型 & 整型 题型:填空题 10.{ 设有变量说明语句 double d=5.4; int a,b; 则执行下述语句组的输出结果是___。 b=((a=2.1)+1.5)/3.6; d*=b; printf("%f\n",d); } 试题编号:E55104

第三章数据类型、运算符和表达式

设x的值为4,则表达式y=(++x)+(++x)+(++x)后,y的值是(D)。 A.12 B.18 C.16 D.21 下列数据中,为字符的是(D)。 A.‘AB’ B."A" C.How D.‘A' 以下符号中,合法的用户标识符是(D)。 A. -p B. int C. 3ab D. _xt_ 以下实型常量中,符合C语言语法的是(A)。 A. .5E-3 B. 1.2E0.5 C. E15 D. 3.14.159E 若有说明和语句:int a=5,b=6;b*=a+1;则b的值为(D) A. 5 B. 6 C. 31 D. 36 设C 语言中,int 类型数据占4个字节,则short 类型数据占(C)。 A.1个字节 B.2个字节 C.4个字节 D.8个字节 若x=3.5,a=2,y=2.5,b=3则表达式(float)(a+b)/2+(int)x%(int)y的值是()。A.1.5 B.2.5 C.3.5 D.2 以下选项中不属于C语言的类型的是(D)。 A.signed short int

B.unsigned long int C.unsigned int D.long short 关于C语言数据类型的叙述,正确的是(C)。 A. 整型不是基本类型 B. 数组不是构造类型 C. 变量必须先定义后使用 D. 不允许使用空类型 若a=12,则表达式a-=a的值为(A)。 A. 0 B.12 C.1 D. 24 若x=3.5,a=2,y=2.5,b=3则表达式(int)(a+b)/2+(int)x%(int)y的值是(D)。 A. 1.5 B. 2.5 C. 3 D. 3.5 若a是数值类型,则逻辑表达式(a==1)&&(a!=1)的值是(C)。 A.1 B. 2 C. 0 D. 不知道a的值,不能确定 若char x=97,则变量x对应(A)字符。 A. ‘a’ B. ‘A’ C. ‘9’ D. ‘7’ 设C语言中,int类型数据占2个字节,则float类型数据占(C)字节。 A. 1个 B. 2个 C. 4个 D. 8个 下列数据类型不是C语言基本数据类型的是(C)。 A. 字符型 B. 整型 C. 数组

第三章-关系代数与关系运算复习课程

第三章关系代数与关系运算 关系数据语言有三类: 1.关系代数语言 2.关系演算语言(元组关系演算语言、域关系演算语言) 3.具有关系代数和关系演算双重特点的语言如SQL 一.关系代数 关系代数:一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。用对关系的运算来表达查询。 运算:将一定的运算符作用于一定的运算对象上,得到预期的运算结果 运算三要素:运算符、运算对象、运算结果 关系代数的运算对象和结果都是:关系 关系代数运算符(四类):集合运算符、专门的关系运算符、算术比较符和逻辑运算符 集合运算符:并(U)、差(—)、交(∩) 传统的集合运算符——从关系的“水平“方向即行的角度来进行 专门的关系运算符:广义笛卡尔积(ⅹ)、选择(σ)、投影(π)、连接、除 专门关系运算符不仅涉及行而且涉及列 比较运算符:>、<、=、≥、≤、≠ 逻辑运算符:¬∧∨ 用来辅助专门的关系运算符 二.传统的集合运算符

传统集合运算符是二目运算符 设关系R和S具有相同的目n(即n个属性),且相应的属性取自同一个域 1.并(Union) 记作:RUS={t|t∈R∨t∈S}结果仍是n目关系,由属于R或S的元组组成。 例: (a)(b) (c)(d) (e) 2.差 关系R与S的差记作:R-S={t|t∈R∧t∈S} 结果仍是n目,由属于R而不属于S的所有元组组成。如图E 3.交 关系R与S的交记作:R∩S = { t | t∈R∧t∈S }结果仍是n目,由即属于R又属于S 的所有元组组成。如图D 可以用差来表示R∩S=R-(R-S) 4.广义笛卡尔积 两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(m+n)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S 有k2个元组,那么关系R与S的广义笛卡尔积有k1 x k2个元组,记作 R×S = { t r t s | t r∈R∧t s∈S } 结果是m+n目 如图例

C语言运算符与表达式的练习题答案

C语言运算符与表达式的练习题 单项选择题 (1)以下选项中,正确的 C 语言整型常量是(D)。 A. 32L B. 510000 C. -1.00 D. 567 (2)以下选项中,(D)是不正确的 C 语言字符型常量。 A. 'a' B. '\x41' C. '\101' D. "a" (3)字符串的结束标志是(C)。 A. 0 B. '0' C. '\0' D. "0" (4)算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为(B)。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 (5)逻辑运算符中,运算优先级按从高到低依次为(D)。 A. && ! || B. || && ! C. && || ! D. ! && || (6)表达式!x||a==b 等效于(D)。 A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) (7)设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是(A)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 *(8)设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是(B)。 A. 3 B. 0 C. 9 D. -12 (9)在以下一组运算符中,优先级最低的运算符是(D)。 A. * B. != C. + D. = (10)设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是(B,上机13)。 A. 6 B. 12 C. 15 D. 表达式出错 (11)若已定义 x 和 y为double 类型,则表达式的值是(D)。

第三章 运算符与表达式

第三章运算符与表达式 3、1 C运算符简介 运算符:狭义的运算符是表示各种运算的符号。 表达式:使用运算符将常量、变量、函数连接起来,构成表达式。 C语言运算符丰富,范围很宽,把除了控制语句和输入/输出以外的几乎所有的基本操作都作为运算符处理,所以C语言运算符可以看作是操作符。C语言丰富的运算符构成C语言丰富的表达式(是运算符就可以构成表达式)。运算符丰富、表达式丰富、灵活。 在C语言中除了提供一般高级语言的算术、关系、逻辑运算符外,还提供赋值符运算符,位操作运算符、自增自减运算符等等。甚至数组下标,函数调用都作为运算符。 C的运算符有以下几类: ++,-- 本章主要介绍算术运算符(包括自增自减运算符)、赋值运算符、逗号运算符,其它运算符在以后相关章节中结合有关内容陆续进行介绍。 3、2 算术运算符和算术表达式

1、算术运算符 +(加法运算符。如3+5) -(减法运算符或负值运算符。如5-2,-3) *(乘法运算符。如3*5) /(除法运算符。如5/3,5.0/3) %(模运算符或求余运算符,%要求两侧均为整型数据。如7%4的值为3)。 除了负值运算符-单目运算符外,其它都是双目运算符。 说明: (1)两个整数相除的结果为整数,如5/3的结果为1,舍去小数部分。但是如果除数或被除数中有一个为负值,则舍入的方向是不固定的,多数机器采用“向0取整”的方法(实际上就是舍去小数部分,注意:不是四舍五入)。 (2)如果参加+,-,*,/运算的两个数有一个为实数,则结果为double型,因为所有实数都按double型进行计算。 (3)求余运算符%,要求两个操作数均为整型,结果为两数相除所得的余数。求余也称为求模。一般情况,余数的符号与被除数符号相同。 例如:-8%5=-3;8%-5=3 2、算术表达式 算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为算术表达式。运算对象可以是常量、变量、函数等。 例如,下面是一个合法的C算术表达式。a*b/c-1.5+’a’。

相关文档
最新文档