基本数据类型与数值表达式
- 格式:doc
- 大小:96.50 KB
- 文档页数:13
数据类型、运算符和表达式一、C 语言的基本数据类型数据是程序处理的对象。
C 中将数据分为不同的数据类型,任何数据都属于某一种特定的数据类型。
数据类型的作用有两个:一是指明为数据分配多大的存储空间和规定了数据的存储结构,进而规定了数据的取值范围;二是规定了数据所能进行的操作。
C 的数据类型分为基本数据类型和构造类型。
基本数据类型是系统定义的,用户可以直接使用。
构造类型由用户自行定义。
C 的数据类型如图所示。
C 标准没有规定各类数据所占用内存位数。
所以不同c 编译系统的各类数据所占用内存位数是不一样的。
上机使用时,应注意使用的c 编译系统的具体规定。
Turbo C 基本类型 所占位数 数的范围 [signed] char 8 -128~127 unsigned char 8 0~255 [signed]int 16 -32768~32767 short [int] 16 -32768~32767long [int] 32 -2147483648~2147483647 unsigned [int] 16 0~65535 unsigned short [int] 16 0~65535 unsigned long [int]320~4294967295C++数据类型基本类型字符型(char) 空类型(void)整型短整型(short int) 无符号整型(unsigned int)长整型(long int)基本整型(int) 实型(浮点型) 双精度型(double)单精度型(float) 指针构造类型枚举(enum) 联合(union)结构体(struct)数组float 32 约6位有效数字double 64 约12位有效数字在Visual C++中:char:1 Byteint:4 Byteshort:2 Bytelong:4 Bytefloat:4 Bytedouble:8 Byte二、常量常量:整型常量、实型常量、字符常量、字符串常量、符号常量1.整型常量C语言程序中可以使用十进制、八进制和十六进制来表示整型常量。
基本数据类型与数值表达式一、知识要点计算机的基本功能是进行数据处理。
在C++语言中,数据处理的基本对象是常量和变量。
运算是对各种形式的数据进行处理。
数据在内存中存放的情况由数据类型所决定。
数据的操作要通过运算符实现,而数据和运算符共同组成了表达式。
本章是对C++语言中的数据类型、运算符、表达式等内容的全面介绍,要正确理解其特点,并灵活运用,主要掌握以下的知识要点:1.掌握常量和变量的概念。
2.掌握整型数据和实型数据、字符型数据和字符串型数据的概念和区别。
3.掌握各种类型的变量说明及其初始化。
4.掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。
5.掌握运算符的优先级、左结合和右结合规则。
6.掌握表达式求值时的自动转换和强制类型转换。
7.掌握自加、自减运算的规则。
8.掌握常用数学函数的功能。
二、例题分析与解答1.选择题例题1:运算符+、=、*、>=中,优先级最高的运算符是()。
A.+ B.= C.* D.>=答案:C分析:根据C++语言对运算符优先级的规则,以上运算符优先级从低到高的次序为=、>=、+、*。
例题2:下列说法正确的是()。
A.cout<<”\n”是一个语句,它能在屏幕上显示”\n”B.\68代表的是字符D。
C.1E+5的写法正确,它表示余割整型常量。
D.0x10相当于020。
答案:D分析:分号是语句的已部分,且\n是转义字符;\68代表了八进制的6、8,而八进制中没有数字8;1E+5是实型常量;十六进制的10相当于十进制的16,相当于八进制的20。
例题3:下列不合法的变量名为()。
A.int B.int1 C.name_1 D.name0答案:A分析:根据变量名命名要求,变量名只能由大小写字母、数字、下划线组成,且系统关键字不能作为变量名。
例题4:下面正确的为()。
A.4.1/2 B.3.2%3C.3/2==1 结果为1 D.7/2 结果为3.5答案:A分析:%运算符要求式整型;关系运算值为0;两个整数相除,商为为相除后的整数部分。
例题5:已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?++d:a<b”值为()。
A.9 B.6 C.8 D.0答案:D分析:此题是考察“++”运算符、逗号运算符、条件运算符及它们运算优先级的综合题,根据这些运算符的运算规则,得出表达式的运算结果。
例题6:已知i=5,j=0,下列各式中运算结果为j=6的表达式是()。
A.j=i+(++j) B.j=j+i++ C.j=++i+j D.j=j+++i答案:C分析:自增++、自减运算符在变量的前面或后面,其运算结果是不同的。
若++或—在变量前,则先将变量的值加1(或减1)后,再将变量的值参与运算;反之则先将变量的值参加运算,再将变量的值加1(或减1)。
自增++、自减运算符优先级高于算术运算符。
例题7:已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是()。
A.0 B.语法错 C.1 D.“假”分析:根据C++语言中运算符优先级的高低,“!”运算符最高,关系运算符高于逻辑运算符。
则上面的表达式转换为:1&&1&&1,结果为1。
答案:C。
2.填空题例题8:如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为____。
答案:1分析:%运算符是求余运算,得到的结果是相除后的余数。
表达式转换为6%2+(6+1)%2=0+7%2=1。
例题9:如果定义int a=2,b=3;float x=5.5,y=3.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_____。
答案:4.5分析:不同类型的数据混合运算时,可以使用强制类型转换符,强制将一种数据类型转换为另一种数据类型后再进行运算。
对表达式,先求表达式的值,再转换值的类型,本题的运算结果为4.5。
例题10:设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为____。
答案:9分析:逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。
求解时从左至右依次计算每个表达式的值,整个表达式的值就是最右边的表达式的值。
本题的答案为9。
例题11:已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-‘4’的值为____。
答案:e分析:C++语言中,对字符数据进行算术运算,实际上就是对字符的ASCII码进行运算。
以字符形式输出时,再将ASCII码转换为相应的字符输出。
本题表达式为ch=97+8-4=101,101相应的ASCII为字符e。
3.编程题例题12:编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。
解:程序如下:#include<iostrean.h>void main(){double r, h, area, volume;cout<<”请输入半径:”;cin>>r;cout<<”请输入高:”;cin>>h;area=3.14*r*r;volume=area*h;cout<<”底面积是: ”<<area<<endl;cout<<”体积是: ”<<volume<<endl;}三、习题分析与解答1. C++语言中有哪些数据类型?分别说明它们的类型关键字、取值范围、类型长度。
答:C++语言中的数据类型有:整型(短整型,整型,长整型);字符型;逻辑型;枚举型;实型(单精度,双精度,长双精度);引用型(指针,引用);复合型(结构,联合);空类型。
2. 字符常量与字符串常量的区别是什么?答:字符常量与字符串常量的主要区别在于:(1)定界符不同。
字符常量使用单引号,而字符串常量使用双引号。
(2)长度不同。
字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数。
(3)存储要求不同。
字符常量存储的是字符的ASCII码值,而字符串常量除了要存储有效的字符外,还要存储一个结束标志’\0’。
3.说明下面的每个数据各属于哪一种(数值常量、字符常量、字符串、标识符、保留字、运算符、标点、非法数据)?25 18 -3.67 12.8 “4”‘4’x1 “x2”“1949.10” cin K_name3ab “float x ,y “ ; if +“\n” ? ;“sy1.cpp”‘\32’ \’答:数值常量有:25,18,-3.67, 12.8字符常量有:‘4’,\’,‘\32’字符串有:“4”,“x2”,“1949.10”,“sy1.cpp”, “\n”保留字:cin ,int,endl,if运算符:+标点:?非法数据:“float x ,y “ ; , 3ab变量:x1,K_name4.选择题(1)下列数据类型不是C++语言基本数据类型的是()。
A.字符型B.整型C.实型D.数组答案:D(2)在C++语言中,080是()。
A.八进制数B.十进制数C.十六进制数D.非法数答案:B(3)下列字符列中,可作为C++语言程序自定义标识符是()。
A.switchB.fileC.breakD.do答案:B(4) 运算符 +、<=、=、% 中,优先级最低的运算符是()。
A. +B.<=C.=D.%答案:C(5) 下列字符列中,可以作为“字符串常量”的是()。
A. ABCB.″xyz″C.′uvw′D. ′a′答案:B(6) 设变量m,n,a,b,c,d均为0,执行(m = a==b)||(n=c==d)后,m,n的值是()。
A.0,0B. 0,1C. 1,0D. 1,1答案:C(7) 字符串”vm\x43\\\np\102q”的长度是()。
A. 8B. 10C. 17D. 16答案:A(8)在C++语言中,自定义的标识符()。
A.能使用关键字并且不区分大小写B.不能使用关键字并且不区分大小写C.能使用关键字并且区分大小写D.不能使用关键字并且区分大小写答案:D(9)设有代码“int a = 5;”,则执行了语句“a + = a - = a*a;”后,变量a的值是()。
A.3B. 0C. -40D. –12答案:C(10)设a为5,执行下列代码后,b的值不为2的是()。
A. b = a/2B. b = 6-(--a)C. b = a%2D. b = a < 3 ? 3: 2答案:C(11)下面的()均是C语言的整型常量。
A.0xffff 和 611B.01b 和 0xa1C.986.012 和 0667D.2e4 和 0x答案:A(12)数学公式写成C表达式,下面的()是正确的。
A.sqrt (abs(pow(x, y) + exp(y)))B.sqrt (abs(pow(y, x) + exp(y)))C.sqrt (fabs(pow(x, y) + exp(y)))D.sqrt (fabs(pow(y, x) + exp(y)))答案:D5.x为int类型,y为double类型,指出下列各表达式值的类型。
(1)1/3 int (2) 48L long(3) 5 % 3 int (4) x*3/y double(5) ‘x’+20 int (6) (int )y int(7) y != 10 bool (8) x<1 || x>10 bool(9) x>10 ? x : sqrt (x) int或float (10) x && y bool(11) true bool (12) (char) (x+10) char(13) 1.0 /3 float (14) sizeof (float) int(15) x,y,x+y, double说明:(9)题,如果x>10成立,表达式值的类型为int,如果x>10不成立,表达式值的类型为float。
(15)题,为逗号表达式,x+y的值即为整个表达式的值,因而值的类型为double。
bool型在C++用int代替,true值为1,false值为0。
6. 写出下列算术表达式的值:(1) x+a%3*(int)(x+y)%2/4 x=2.5,a=7,y=4.7答:上述表达式=2.5+1*(int)7.2%2/4 = 2.5+1*7%2/4 = 2.5(2) (float)(a+b)/2+(int)x%(int)y a=2,b=3,x=3.5,y=2.5答:上述表达式=(float)5/2+3%2 = 2.5+1 = 3.57.设程序中有说明语句int a=20; double x=4.7; char r= ’a’;试求出下列每个表达式的值(假定各表达式互不影响)。