省二级C等级考试基础考点1基本概念Word格式文档下载.docx
- 文档编号:21661221
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:22
- 大小:70.75KB
省二级C等级考试基础考点1基本概念Word格式文档下载.docx
《省二级C等级考试基础考点1基本概念Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《省二级C等级考试基础考点1基本概念Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
基本数据类型
1.常量和变量、标识符(*****)
1)常量和变量(*****)
程序运行过程中其值不能改变的量称为常量,其值可以改变的量称为变量。
常量有整型常量、实型常量、字符常量、字符串常量。
变量有整型变量、浮点型变量、字符型变量,没有字符串变量。
2)标识符(*****)
标识符是指用来表示符号常量、变量、数组、函数和文件等对象的名称的有效字符系列,它是以字母或下划线开头的字母数字下划线序列。
1标识符可以为数字但不能以数字开头,标识符中不能有空格、标点符号、运算符或其他字符。
2标识符区分大小写。
3)标识符类型(****)
(1)关键字
关键字是指由系统内部定义的,具有特殊含义和用途的标识符,其代表了固定的含义,程序中不能另做他用,只能由小写字母组成。
main是不是关键字?
(2)预定义标识符
预定义标识符在C语言中有特定的含义,可以另做它用但不会失去原有含义,如库函数名printf和预编译命令define等。
(3)用户自定义标识符
用户自定义标识符是用户根据需要定义的标识符,用来表示变量名、函数名等,在定义标识符时必须遵循其命名规则,最好做到见名知意,不要将l与I,o与0等混淆。
2.整型数据(*****)
以补码的形式存放的。
1)整型常量(*****)
(1)符号常量
一般用大写字母表示。
符号常量在使用前必须先定义
#define标识符常量
其中#define是宏定义预处理命令,不是C语句,后面不能有分号,是一个不带参数的宏定义
(2)直接常量(字面常量)
整型常量就是整常数,可以用十进制、八进制或者十六进制表示。
1十进制整数:
正负号及0-9
2八进制整数:
数字0开头,0-7
3十六进制整数:
0x开头,1-9十个数字和小写字母a-f或者大写字母A-F组成。
12L、5U、5UL?
2)整型变量(*****)
使用变量时必须“先说明,后使用”。
凡未被事先定义的,系统不把它作为变量名,这样能保证程序中变量名使用得正确。
(1)整型变量的类型
表3.1整型变量的类型
类型
类型说明符
数的范围
分配字节数
基本型(整型)
int
-32768~32767
2
长整型
long或longint
-214748348~2147483647
4
短整型
short或shortint
无符号整型
unsignedint
0~65535
无符号长整型
unsignedlong
0~4294967295
无符号短整型
unsignedshort
(2)变量的定义
变量定义一般放在函数开头,变量定义的一般格式如下:
数据类型变量1[,变量2,…,变量n];
例如:
inta,b,max;
longn;
unsignedi,j;
(3)变量的初始化(赋初值)
数据类型变量1=值1[,变量2=值2,…,变量n];
inta,b,i=0,p=1;
3.实型数据(****)
实型数据也叫浮点数,即我们平时常说的实数,分实型常量和实型变量。
1)实型常量(***)
实型常量有两种表示方式,十进制小数形式和指数形式。
(1)十进制小数形式
十进制小数由数字和小数点组成,注意必须有小数点,如0.123、123.、.123、0.0都是小数形式,作为实数对待。
(2)指数形式
指数形式用字母e或E表示,需要注意e或E前面必须有数字,之后必须是整数。
如10-3,应该表示成1e-3。
2)实型变量(****)
表3.2实型变量的类型
实型变量
标识符
占用内存
有效位数
单精度
float
4个字节
6~7位
双精度
double
8个字节
15~16位
实型常量的类型默认为double类型,在实型常量后加字母f或F,认为它是float型。
如果整型数据超过了long型的范围,也将其定义成float型或者double型。
实型变量的定义形式和初始化方式与整型变量相同。
floatx,y;
doubles=0;
4.字符型数据(*****)
1)字符常量
字符常量是用单引号括起来的单个普通字符或转义字符。
(1)普通字符常量(*****)
单引号括起来,只能是单个字符,其值为该字符的ASCII码值
字符型数据与整型数据通用
大写字母的ASCII值比小写字母小32。
数字被定义成字符以后其含义与数值不同,数字字符'
0'
的ASCII码值为48,若参与算术运算时,是以48为值进行,知道了'
的ASCII码值,其他数字字符的ASCII码值都可以推算出来。
数字字符和数值之间的转换
(2)转义字符(*****)
转义字符用反斜线后面跟一个字符或一个代码值表示。
常用转义字符及其作用
字符形式
含义
ASCII码值
\n
换行(相当于按Enter键)(CR、LF)
10
\r
回车不换行(CR)
13
\t
水平制表(相当于按Tab键)(HT)
9
\'
单引号
39
\"
双引号
34
\\
反斜杠
92
\ddd
用1位、2位或3位八进制数表示的字符
\xhh
用1位或2位十六进制数表示的字符
'
\n'
表示换行,'
\012'
代表八进制数12,即十进制的10,其功能与'
相同。
又如:
\0x41'
表示十六进制的41,即十进制的65,而ASCII码值为65的是大写字母A,所以转义字符'
与字符常量'
A'
等价。
转义字符'
\0'
的含义不同,前者的ASCII码值为0,表示空操作或者是字符串结束标志,后者是字符0,其ASCII码值为48。
2)字符变量(*****)
字符变量的取值为字符常量,即单个字符,在内存中占1个字节,其类型说明符号为char。
字符变量类型说明的格式与整型变量相同。
charc1,c2;
charc='
x'
;
整型数据和字符型数据是可以通用的。
3)字符串常量(*****)
字符串常量是用一对双引号("
"
)括起来的字符序列。
每个字符串尾自动加一个'
作为字符串结束标志,
字符串常量在内存中所占的字节数为字符串中字符的个数加1。
1'
a'
与"
a"
是不同的
2C语言中没有字符串变量
运算符和表达式
1.运算符(***)
1)运算符的种类(***)
2)学习运算符的注意事项(***)
学习C语言的运算符应注意以下几个问题:
(1)运算符的功能,如“*”实现乘法运算。
(2)与运算量的关系。
1要求运算量的个数,即目数,C中的运算符的目数有单目、双目和三目。
2要求运算量的类型,如“%”要求两侧均为整型数据。
(3)运算符的优先级,15个优先级。
(4)运算符的结合性,即计算顺序:
从左到右(左结合)和从右到左(右结合)。
(5)运算结果的类型,如:
两整数相除,结果为整数,实数与整数相除或者实数与实数相除,结果为实数。
2.表达式(***)
1)表达式的概念(**)
表达式是由数据和运算符组成的。
用运算符和括号将运算对象(也称操作数)连接起来的符合C语法规则的式子,称为C表达式
将算术运算符和括号将运算对象(变量、常量、函数等)连起来的式子为算术表达式
由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式
其他同理。
2)左值表达式(****)
赋值运算符“=”是个二目运算符,能够放在其左端的表达式叫做左值表达式(简称为左值),只能放在其右的表达式叫做右值表达式。
左值必须是一个变量,它的值必须可以改变,左值不能是常量或表达式。
右值可以是函数、常量、变量以及表达式等,但右边的操作数必须可以进行取值操作或有具体的值。
单目的自增运算符“++”和自减运算符“--”的运算数也必须是左值。
3.算术运算符与算术表达式(*****)
C语言中,基本算术运算符有五种:
加(+)、减(-)、乘(*)、除(/)、求余(%)。
优先级:
*、/、%为3级,+、-为4级,即*、/、%高于+、-。
结合方向:
从左向右
目数:
双目运算符,即有两个运算对象。
【说明】
1“-”作为负号时,为单目运算符,其结合方向为右结合
2两整数相除,结果为整数,有一个实数,结果就为实数。
例如,5/2=2,5.0/2=2.5。
3%要求两侧均为整型数据,结果为两数相除后的余数。
例如,5.0%2=1是不允许的。
需要注意的是:
在C语言中,1/2=0,所以在计算s=1+1/2+1/3+1/4+……这样的式子时,应该把项写成1.0/i或者(double)1/i,否则s的值为第1项的值1,后面的项全为0。
表3.4算术运算符的优先级和结合性
优先级
运算符
描述
目数
结合性
+
–
正号运算符
负号运算符
单目
从右至左
3
*
/
%
乘法
除法
取余
双目
从左至右
加法
减法
4.自增、自减运算符(*****)
为2,很高,高于算术运算符*、/、%,仅次于圆括号、下标等运算符。
从右至左。
单目(一元)运算符
自增(++)和自减(- -)运算符有两种:
1)前置自增/自减运算符(*****)
形式:
++i,--i
含义为先执行i+1或i-1,再使用i值。
2)后置自增/自减运算符(*****)
i++,i--
含义为先使用i值,再执行i+1或i-1。
a=5;
b=++a;
b=a++;
j=3;
printf(“%d”,--j);
printf(“%d”,j--);
左值要求
5.赋值运算符与赋值表达式(*****)
1)简单赋值运算符(*****)
在C语言中,简单赋值运算是使用赋值符“=”来操作的,它是使用最多的双目运算符之一。
其功能是将一个数据(常量或表达式)赋给左边的一个变量。
14级,仅高于逗号运算符
自右向左
格式如下:
变量标识符=表达式
1赋值运算符的左值必须是变量,不能是常量或表达式,这是赋值运算符的左值要求。
2赋值转换规则:
使赋值号右边表达式值自动转换成其左边变量的类型,如果是将浮点型数赋给整型变量,系统自动舍去小数部分,没有四舍五入。
3赋值表达式的值与变量值相等,且可嵌套,即多重赋值
2)多重赋值(****)
两个或更多的赋值运算符“=”
a=b=c=10
a=(c=7)+(b=8)
3)复合赋值运算符(*****)
C语言有10个复合赋值运算符,都是由赋值符“=”之前加上其他运算符而构成的:
加赋值+=减赋值–=乘赋值=除赋值/=求余赋值%=
位与赋值&
=位或赋值|=位异或赋值^=
左移位赋值<
<
=右移位赋值>
>
=
a+=b
x*=y+8
a=12;
a+=a-=a*a
6.关系运算符与关系表达式(*****)
关系运算也叫比较运算,C语言的关系运算符共有6个,它们是:
大于>
大于等于>
=小于<
小于等于<
=等于==不等于!
自左向右。
前4个的优先级为6,后两个为7。
若a=0;
b=0.5;
x=0.3;
则a<
=x<
=b的值为?
?
inti=1,j=7,a;
a=i+(j%4!
=0);
则a=?
a'
0的结果为?
'
A'
100的结果为?
1关系表达式的运算结果:
只能是0或1。
当关系成立时,关系表达式的值是1,关系不成立时值是0。
2如果关系表达式中的两个运算数的数据类型不同,那么就按照算术转换规则进行数据类型转换,转换成相同类型之后再做比较。
3应避免对实数作相等或不等的判断。
1.001/3.0*3.0==1.001,结果可能为0,因为在计算机中实数一般是近似相等,不是绝对相等,应将上式改写为:
fabs(1.001/3.0*3.0-1.001)<
1e-6
4注意区分赋值运算符“=”与等于运算符“==”。
如果有语句if(a=b),若b不为0,则表达式成立,这里不是判断a与b是否相等,而是赋值语句。
5别把数学表示法搬到程序中。
为测试x是否处于[0,10]之间,常见下面写法:
if(0<
=10),这是数学的写法,虽然在C语言的语法上没有错误,但是没有意义,因为这是一个恒真的表达式。
应该写成(x>
=0)&
&
(x<
=10)
7.逻辑运算符与逻辑表达式(****)
C语言提供的逻辑运算符有三种:
逻辑非“!
”,逻辑与“&
”,逻辑或“||”。
1)逻辑非“!
”(*****)
2级
从右到左
单目运算符
2)逻辑与“&
”和逻辑或“||”(*****)
“&
”的优先级为11级,“||”的优先级为12,
高于条件运算符、赋值运算符和逗号运算符
低于算术运算符、移位运算符、关系运算符、位运算符。
从左到右
双目运算符
表3.5逻辑运算符真值表
a
b
!
a&
a||b
非0
1
a如果a的值非0,则!
a为0;
如果a值是0,则!
a为1。
a&
b当a和b都非0,结果才为1,否则为0。
a||b当a和b都为0,结果才为0,否则为1。
例如,判断某年是不是闰年。
year%4==0&
year%100!
=0||year%400==0
1逻辑表达式的计算结果:
只能为1或者0。
2逻辑运算符的操作对象只要非0即为“真”,0即为“假”。
3)逻辑表达式的短路特性(****)
逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
例如,a,b,c的值分别为1,0,3,执行d=(a++&
++b)||c++后,a,b,c,d的值分别为多少?
4)关系表达式和逻辑表达式的简化(**)
编程时需要对关系表达式和逻辑表达式进行简化,目的是改善可读性和有效性。
以下的表达式是等价的:
x与x!
=0
x与x==0
(x>
y)与x<
=y
(x==y)与x!
(x&
y)与!
x||!
y
(x||y)与!
x&
y
if(x!
=0)可以直接写成if(x)。
(x<
=0||!
y),!
!
y,x>
0&
y。
8.条件运算符与条件表达式(****)
唯一的一个三目运算符:
表达式1?
表达式2:
表达式3
其执行过程如下:
首先计算表达式1的值,如果为真,就计算表达式2,得到的值就是整个表达式的值,否则计算表达式3,表达式3的值就是整个表达式的值。
z=x>
y?
x:
13级,仅高于赋值运算符和逗号运算符。
三目
1条件运算符相当于if语句,但不能取代一般的if语句,仅在if语句中内嵌的语句为赋值语句且两个分支都给同一个变量赋值时才能代替if语句。
2条件运算符可使程序简洁,提高程序的执行效率。
3条件运算符可嵌套,因结合性是从右到左的,所以,a?
b:
c?
d:
e?
f:
g等价于a?
(c?
(e?
g))
4expr1、expr2、expr3类型可不同,表达式值取较高的类型。
例如,x>
1:
1.5,当x>
y时,值为1.0,当x<
=y,值为1.5。
9.逗号运算符和逗号表达式(*****)
逗号运算符“,”用于把多个表达式连接起来,构成一个逗号表达式。
逗号表达式的一般形式为:
表达式1,表达式2,表达式3,…,表达式n
逗号表达式的功能是
从左到右依次计算各个表达式的值,最后一个表达式的值是整个表达式的值。
也即逗号表达式的值等于表达式n的值。
逗号表达式常用于for循环语句中。
15级,是优先级最低的运算符
从左至右
a=3*5,a*4,
a=3*5,a*4,a+5
x=(a=3,6*3)
x=a=3,6*a
a=1;
b=2;
c=3;
printf(“%d,%d,%d”,a,b,c);
printf(“%d,%d,%d”,(a,b,c),b,c);
intx,y=7;
floatz=4;
x=(y=y+6,y/z);
x的值为多少?
1逗号表达式可以嵌套,即某个表达式也可以是一个逗号表达式。
2程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值,比如在for循环中经常就是这样的情况。
3并不是所有出现逗号的地方都组成逗号表达式,很多情况下,逗号是作为分隔符的,如函数的参数表中就是将逗号作为分隔符。
4逗号表达式经常出现在各种场合,但单独的考题比较少。
10.位运算符与位运算表达式(*)
表3.6位运算符和移位运算符表
优先级
运算符及含义
结合性
目数
取反
~按位取反
移位
5
位左移
位右移
从
左
到
右
按位
8
按位与
^按位异或
|按位或
1)&
(位与)
“&
”运算的具体运算规则如下:
1&
1=11&
0=00&
1=00&
0=0
8级
结合性:
10101100&
01011010=?
7&
–5=3
2)|(位或)
“|”运算的具体运算规则如下:
1|1=11|0=10|1=10|0=0
10级
01011100|10101100=?
7|–5=–1
3)(异或)
“”运算的具体运算规则如下:
11=010=101=100=0
9级
1010001101010011=?
7–5=–4
“异或”运算可以实现不用临时变量,交换两个变量的值:
a=ab;
b=ab;
4)~(按位取反)
包括符号位在内按位取反,即0变成1,1变成0。
~10101100=?
十进制数5按位取反后得–6
5)(左移)
左移运算符“<
”(两个<
符号连写)可将左操作数的二进制值向左移动指定的位数,格式如下:
操作数<
移位的位数
左移后,低位补0,移出的高位舍弃。
5级
表达式4<
2的结果是16
左移1位相当于乘2,即扩大2倍,左移n位相当于乘2n。
6)>
(右移)
右移运算符“>
”(两个>
符号连写)可将左操作数的二进制值向右移动指定的位数,它的操作格式与“左移”相似,格式如下:
操作数>
右移后,移出的低位舍弃。
如果是无符号数则高位补0;
如果是有符号数,则高位补符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 等级 考试 基础 考点 基本概念