第1部分c语言概述变量运算符与表达式 2.docx
《第1部分c语言概述变量运算符与表达式 2.docx》由会员分享,可在线阅读,更多相关《第1部分c语言概述变量运算符与表达式 2.docx(14页珍藏版)》请在冰豆网上搜索。
![第1部分c语言概述变量运算符与表达式 2.docx](https://file1.bdocx.com/fileroot1/2023-1/9/d10d0e55-8ba8-465c-900e-36548ceebf20/d10d0e55-8ba8-465c-900e-36548ceebf201.gif)
第1部分c语言概述变量运算符与表达式2
第1章C语言概述、变量、运算符与表达式
本章要点
1.C语言概述
C语言程序的特点:
〔1〕C程序是由函数构成的,其中必须有且只有一个主函数main()。
〔2〕函数体是由左右花括号{}括起来的部分。
〔3〕一个C程序总是从main函数开始执行的,不管main函数在整个程序中的位置如何。
〔4〕C语言中的每个根本语句都以“;〞完毕。
〔5〕C语言书写格式自由,一行内可以写一个语句,也可以写多个语句。
〔6〕C语言本身没有输入输出语句。
输入和输出的操作是由库函数scanf和printf等函数来完成的。
〔7〕可用/*…*/对C程序中的任何部分作注释。
1.1.2标识符、常量和变量
常量——在程序运行过程中值不能被改变的量。
例如:
2.2、-0.3、02、1e3等。
变量——在程序的执行过程中值可以被改变的量。
标识符——用来标识变量名、符号常量名、函数名、数组名、类型名或文件名等的有效字符序列。
1.标识符的有关规定:
〔1〕由英文字母、数字、下划线组成,且第一个字符必须是字母或下划线,一般不超过8个字符。
〔2〕大小写字母的含义不同。
〔3〕不能使用C语言中的关键字做标识符。
附:
C语言中的关键字共有32个,而且都是小写。
其中,标识类型关键字有:
int,char,float,double,long,short,unsigned,signed,struct,union,enum,auto,extern,static,register,typedef,void,const和volatile。
标识控制流的关键字有:
for,goto,return,break,continue,if,else,while,do,switch,case和default。
其它关键字有:
sizeof。
〔4〕用户取名时,应当尽量遵循“简洁明了〞和“见名知意〞的原那么。
2.常量的有关规定:
常量的分类如下:
(1)整型常量:
0,-3,12
(2)
(3)字符常量:
‘a’,‘d’
(4)符号常量:
可以用一个标识符代表一个符号常量。
但在程序中必须用define说明,例如“#defineN30〞,这里N就是一个字符常量,编程时直接用N来表示字符串30。
3.变量的有关规定:
(1)使用变量前,一定先定义后使用,否那么不能直接做为变量名。
〔2〕每一个变量属于一种类型,在编译时为其分配一定的存储单元,并根据此类型检查该变量所进展的运算是否合法。
〔3〕变量名的定义:
[存储属性]<数据类型><变量名表>
1.2.3数据类型
整型类型
根本类型浮点型类型
字符型类型
数据类型
构造类型
复杂类型指针类型
枚举类型
1.整型数据
✋整型常量:
〔1〕十进制整数:
数码直接开头的十进制数。
如1234,-234
〔2〕八进制整数:
以0开头的常量是八进制数。
如011=〔11〕8
〔3〕十六进制整数:
以0x开头的数是十六进制。
如0x123即〔123〕16
✋整型变量:
如表所示
表整型变量说明表
整型数据类型
关键字
所占位数
所占字节
数的表示范围
根本型
int
16
2
-215~215-1
短整型
shortint
16
2
-215~215-1
长整型
longint
32
4
-231~231-1
无符号整型
unsignedint
16
2
0~216-1
无符号短整型
unsignedshort
16
2
0~216-1
无符号长整型
unsignedlong
32
4
0~232-1
2.浮点型数据
✋浮点型常量
浮点型常量有两种表示形式:
〔1〕十进制数形式:
它是由数字和小数组成,如:
3.14159,-7.2,8.9。
注意:
〔1〕字母e或E之前〔即尾数部分〕必须是有数字的。
〔2〕e或E后面的指数部分必须是整数。
✋实型变量
实型变量分为单精度型〔float〕和双精度型〔double〕。
〔1〕单精度:
占4个字节,有效位为7位,数值范围为10-38~1038。
〔2〕双精度:
占8个字节,有效位为15~16位,数值范围约为10-308~10308。
3.字符型数据
✋字符型常量
字符型常量是由一对单引号括起来的单个字符构成。
一个字符型常量的值是该字符集中对应的编码值。
‘0’~‘9’的ASCⅡ编码值是48~57。
显然字符‘0’与数字0是不同的。
C语言中还允许用一种特殊形式的字符常量,它是以‘\’开头的字符序列。
下表为换码序列表。
表换码序列表
换码序列
意义
换码序列
意义
\n
回车换行
\r
回车
\b
左退一格
\t
横向跳格字符
\f
换页
\0
空值〔NULL〕
\’
单引号
\〞
双引号
\v
竖向跳格
\000
1至3位八进制所代表的字符
\\
反斜线
\xhh
1至2位十六进制所代表的字符
✋字符型变量
字符型变量存放一个字符的ASCII码,在内存中占一个字节。
字符型变量分为两类:
一般字符型〔char〕和无符号字符型〔unsignedchar〕。
✋字符串常量
字符串常量是由一对双引号括起来的字符序列。
C语言中规定以字符‘\0’作为字符串完毕标志,字符‘\0’由系统自动参加到每个字符串的完毕处。
4.变量的初始化
变量的初始化:
在定义变量的同时给变量赋予初值。
方法:
〔1〕先说明变量类型,然后再赋值。
〔2〕在对变量类型说明的同时,给变量赋初值。
运算符与表达式
C的运算符根据运算对象的个数分为单目运算符、双目运算符和三目运算符。
运算符的优先级是指不同的运算符计算的先后顺序。
运算符的结合性是指当一个运算对象两侧的运算符的优先级一样时,进展运算处理的结合方向。
其结合方向分为:
自左向右和自右向左。
下表为运算符的优先级与结合性。
表运算符的优先级与结合性
优先级
运算符
含义
运算对象个数
结合方向
1
〔〕
[]
—>
.
圆括号运算符
下标运算符
指向构造体成员运算符
构造体成员运算符
自左向右
2
!
~
++--
-
〔类型〕
*
&
sizeof
逻辑非运算符
按位取反运算符
自增,自减运算符
负号运算符
类型转换运算符
指针运算符
取地址运算符
长度(求字节数)运算符
1
自右向左
3
*/
%
乘法,除法运算符
求余(取模)运算符
2
自左向右
4
+-
加法,减法运算符
2
自左向右
5
<<>>
左移,右移运算符
2
自左向右
6
<<=>>=
关系运算符
2
自左向右
7
==!
=
等于,不等于运算符
2
自左向右
8
&
按位与运算符
2
自左向右
9
^
按位异或运算符
2
自左向右
10
|
按位或运算符
2
自左向右
11
&&
逻辑与运算符
2
自左向右
12
||
逻辑或运算符
2
自左向右
13
?
:
条件运算符
3
自右向左
14
=+=-=*=/=%=<<=>>=&=|=^=
赋值运算符
2
自右向左
15
,
逗号运算符
自左向右
1.算术运算符及其表达式
算术运算符包括加、减、乘、除及取模5种,分别由+,-,*,/,%来表示。
C语言规定:
〔1〕模运算符%,仅用于整型变量或整型常量。
〔2〕优先级:
乘、除、模优先级高于加、减的优先级。
〔3〕结合方向:
算术运算符的结合方向是从左至右。
算术表达式是由算术运算符、括号以及操作对象组成的符合C语言语法规那么的表达式。
2.赋值运算符及其表达式
赋值运算符“=〞的作用是将一个数据赋给一个变量。
赋值运算符“=〞之前加上其它运算符,可构成其复合运算符。
例如:
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。
赋值表达式:
<变量><赋值运算符><表达式>
3.增1、减1运算符及其表达式
i++(或i--)表示在使用该表达式值之后将i值加1〔或减1〕。
++i(或--i)表示在使用该表达式值之前将i值加1〔或减1〕。
说明:
〔1〕++和--仅适用于变量,不能用于常量或表达式。
〔2〕++和--运算符的结合方向是“自右向左〞。
4.关系运算符及其表达式
关系运算符均为两目运算符,共有六种:
>,<,>=,<=,==,!
=。
前4个运算符的优先级高于后2个。
结合方向是自左向右。
关系运算符要求两个操作数是同一种数据类型,其结果为一逻辑值,即关系成立时,其值为真〔true),用非0值表示;关系不成立时,其值为假〔false〕,用0表示。
关系表达式是由关系运算符将两个表达式连接起来的有意义的式子。
关系表达式的值是一个逻辑值,即“真〞或“假〞。
用1表示“真〞,用0表示“假〞。
5.逻辑运算符及其表达式
逻辑运算符有“&&〞〔逻辑与〕、“||〞〔逻辑或〕和“!
〞〔逻辑非〕三种。
其中“&&〞和“||〞为二目运算符,并为自左向右结合方向;“!
〞为单目运算符,仅对其右边的对象进展逻辑求反运算。
逻辑运算符的操作对象为零或非零整数值。
逻辑表达式是由逻辑运算符和其操作对象组成的表达式。
6.位运算符
位运算符包括:
&,|,~,<<,>>,^。
在位运算符中,~的优先级最高,其次是<<和>>,然后依次是&,^,|。
说明:
〔1〕这些运算符除~之外,均为二目运算符,即要求两侧各由一个运算量。
〔2〕运算量只能是整型或字符型的数据,不能是实型数据。
7.逗号运算符及其表达式
逗号运算符为“,〞。
逗号表达式是用逗号运算符把两个表达式连接起来。
其一般形式为:
〈表达式1〉,〈表达式2〉
说明:
〔1〕逗号表达式的执行过程是:
先求表达式1的值,再求表达式2的值,表达式2的值就是整个逗号表达式的值。
〔2〕逗号运算符是所有运算符中级别最低的。
〔3〕逗号表达式的一般形式可以扩展为
〈表达式1〉,〈表达式2〉,〈表达式3〉,……〈表达式N〉
表达式N的值是整个表达式的值。
8.条件运算符及其表达式
条件运算符是一个三目运算符,把三表达式组合成一个表达式。
其一般形式为:
〈表达式1〉?
〈表达式2〉:
〈表达式3〉
说明:
〔1〕其执行过程为:
先计算〈表达式1〉的值,假设该值为真〔非0值〕,那么计算〈表达式2〉的值,并且该值即为条件表达式值。
假设〈表达式1〉的值为假〔0〕,那么计算〈表达式3〉的值,并将该值作为条件表达式的值。
〔2〕条件运算符优先级别高于赋值运算符,低于算术运算符和关系运算符。
〔3〕条件运算符结合方向是“自右至左〞。
〔4〕〈表达式1〉与〈表达式2〉、〈表达式3〉的类型可以不同。
选择题
1.C语言程序的根本单位是〔〕。
A.程序行B.字符C.函数D语句
2.在C语言中,字符型数据在内存中以〔〕形式存放。
A.原码B.反码C.补码D.ASCII码
3.以下转义字符中〔〕是非法的。
A.'\t'B.'\033'C.'\0xf'D.'\''
4.C语言中,最简单的数据类型包括〔〕。
A.整型、实型、关系型B.整型、实型、逻辑型
C.整型、实型、字符型D.整型、字符型、逻辑型
5.以下各标识符组中,合法的用户标识符是()。
A.3A3B.KEYC._ABCD.char
printfaa_1Aa_b2b
whilefortextvoid
6.以下4个选项中,均是C语言关键字的是()。
A.signedB.switchC._autoD.char
printftypedefscanfIF
include continuetextvoid
7.以下4个选项中,均是字符常量或数值常量的是()。
A.10.2B."A"C.'8'D.0xh11
2.3e2.3e-6.50232e3
'a'1a10xa2a06
8.在C语言中,运算对象必须是整型的运算符是〔 〕。
A.%=与/B.=与&C.*与^D.%与|
9.设“inta=2,b=2;〞,那么++a+b的结果是〔 〕,a的结果是〔 〕,b的结果是〔 〕。
A.2B.3C.4D.5
10.以下运算符中优先级最高的是〔〕。
A.++B.+C./D.+=
11.设“inta=2;〞,那么表达式“(a++*1/3)〞值是〔 〕,a的值是〔 〕。
A.0B.1C.2D.3
12.设有以下语句,那么c的二进制值是〔〕。
chara=3,b=6,c;
c=a^b<<2;
A.00010110B.00011011C.00011110D.00011000
13.在C语言中,不同的两个数据混合运算时,要先转换成一样类型再进展运算,设有int、long、unsigned和char类型的变量和数据,那么表达式最后的运算结果是〔 〕类型的数据。
A.intB.charC.longD.unsigned
14.数学表达式xA.x15.设a=2,b=3,c=4,那么逻辑表达式“!
(a+c)*b-2&&a+c%2”的值是〔 〕。
A.0B.1C.-1D.2
16.设a=1,b=2,c=3,d=4,那么表达式“a>b?
b:
c>d?
d:
a〞的值为〔〕。
A.1B.2C.3D.4
17.“inta,b;〞,表达式〔a=2,b=3,a>b?
a++:
b++,a+b〕的值是〔 〕。
A.5B.6C.7D.8
18.请从以下表达式中选出当a为奇数时值为1的表达式〔〕。
A.a%2==0B.a%2C.a%2-1!
=0D.a/2*2-a==0
19.设a=5,b=2,那么表达式“!
a+b〞的值是〔〕。
A.-1B.0C.1D.2
20.设inti=3,那么表达式“(i++)+(++i)+(i++)〞的值是〔〕。
A.6B.9C.11D.12
21.设inti=3,那么表达式“(++i)+(++i)+(++i)〞的值是〔〕,i的值是〔〕。
A.3B.6C.15D.18
22.以下不正确的表达是〔〕。
A.一个好的程序应该有详尽的注释。
B.假设x和y类型一样,在执行了赋值语句“x=y;〞后y中的值将放入x中,y中的值不变。
C.在程序中,ABC与abc是两个不同的变量。
D.当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值。
23.以下不正确的表达是〔〕。
A.在C程序中,赋值运算符的优先级最低。
B.在C程序中,“a――;〞是赋值语句。
C.在C程序中,#include和#define均不是C语句。
D.在程序中所用的变量必须先定义后使用。
24.以下语句中(〕是C语言的正确的赋值语句。
A.a=b=2B.a=4,b=5C.a++;D.y=int(x);
25.不能正确表示a*b/c*d的C语言表达式是〔〕。
A.a*b/c*dB.a*b/(c*d)C.a/(c*d)*bD.a*b/c/d
填空题
1.一个C语言程序必须有且只有一个,一个C程序必须从开始执行。
2.C语言中分号是语句的标志,而不是语句的分隔符。
3.C语言中标识符只能由字母、数字和三种字符组成,且必须以或英文字母开头。
4.‘a’在内存中占个字节,“a〞在内存中占个字节。
5.“float a=3.5,b=5.5;int c=12;〞,那么算术表达式“a+c/5*(int)(a+b)%5〞的值是。
6.定义“inta=2,b=4,c=6;〞,那么执行完语句“a*=12+c++-++b;〞后,表达式的值是,a的值是,b的值是,c的值是。
7.定义“intx=5,y=9;〞,那么执行语句“x=3+x,x+y,y-=x,y+x;〞后,变量x的值是,变量y的值是,表达式的值是。
8.a=5,那么表达式“a+=a-=a*a〞的值是。
9.a=5,那么表达式“a-=a+=a*a〞的值是。
10. i=3,执行语句“j=i++;〞后,j值是,i的值是。
11. a=3,b=4,c=5,写出以下逻辑表达式的值:
(1)a+b>c&&b==c结果为:
(2)!
(a+b)&&0||!
c结果为:
(3)(m=a)&&(y=b)||!
c结果为:
(4)(a+b)-!
(c<8)&&b+c%2结果为:
选择题参考答案
1.C
2.D
3.C
解释:
x与f不属于八进制字符。
4.C
5.C
6.B
解释:
printf,,include,_auto,text,IF均不是C语言中的关键字。
7.C
解释:
指数形式表示法要求e的前后必须有数字,而且e后的数字必须为整型。
所以A和B不正确。
还有,B中“A〞是字符串常量。
在D中,h不属于十六进制的字符。
8.D
解释:
要求运算对象必须为整型的有%和%=。
位运算中,要求运算量必须是整型或字符型。
所以,只有D正确。
9.DBA
解释:
在此表达式中,++的运算符高于+,所以先计算〔++a〕〔值为3,即a的值为3〕,然后加b〔值为5〕,因此,求得表达式的值为5,a的值为3,而b的值不变,仍为2。
10.A
解释:
题中运算符的优先级由高到低依次是:
++,/,+,+=。
11.AD
解释:
因为a++是先使用后加1,所以表达式的值为:
a*1/3=2*1/3=0,而后a的值加1为3。
12.B
解释:
题中a的二进制值为00000011,b的二进制值为00000110。
表达式中<<优先级高于^,所以,先将b左移2位〔得到的值为00011000〕,再将所得的值与a按位异或,结果为00011011。
13.CC
14.D
15.B
解释:
此题要求求逻辑表达式的值,所以只有A或B可能正确。
根据运算符优先级的不同,应先计算&&前的部分!
(a+c)=0,0*b-2=-2,然后计算&&后的部分a+〔c%2〕=2,最后求-2&&2=1。
所以B是正确的。
16.A
解释:
此题可以这样表示:
a>b?
b:
〔c>d?
d:
a〕。
即当a>b不成立时,执行冒号后的另一个条件表达式〔c>d?
d:
a〕。
17.B
解释:
此题可理解为a=2,b=3,然后计算表达式a>b?
a++:
〔b++,a+b〕的值。
由于a>b不成立,执行冒号后的逗号表达式〔b++,a+b〕,而逗号表达式的值为最后一个表达式的值。
即先求得b=4,再求a+b=2+4=6。
18.B
解释:
A,C,D表示的是a为偶数时的表达式。
19.D
解释:
此表达式等价于“〔!
a〕+b〞,等于0+2=2。
20.D
解释:
使用TurboC或MSC系统时,在整个表达式求解之前,先对表达式进展扫描,当遇到++i时,对i进展自加,i得4,然后进展4+4+4=12的运算,最后再执行其它的表达式i++。
所以表达式的结果为12,i的结果为6。
21.DB
解释:
由上可知题,先执行3次++i,i得6,然后6+6+6=18。
所以表达式的值为18,i的值为6。
22.D
23.A
解释:
在C程序中,逗号运算符的优先级最低。
24.C
解释:
语句应该以“;〞完毕,所以A和B不正确;而D的正确写法是“y=(int)x;〞。
因此只有C正确。
25.A
填空题参考答案
1.主函数〔或main函数〕、主函数〔或main函数〕
2.完毕
3.下划线下划线
4.一两
解释:
‘a’表示单个字符,在内存中占一个字节,而“a〞表示一个字符串,C规定‘\0’为字符串完毕标志,故又占一个字节的内存空间。
5. 11.5
6.262657
7.819
8.-40
9.0
10.34
11.
(1).0
(2).0
(3).1
(4).1