基本数据类型、运算符和表达式
- 格式:doc
- 大小:28.25 KB
- 文档页数:10
数据类型、运算符和表达式一、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语言运算符及其表达式(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--C语言的数据类型运算符表达式1.基本数据类型基本数据类型最主要的特点是,其值不可以再分解为其它类型。
也就是说,基本数据类型是自我说明的。
2.构造数据类型构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。
也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。
每个“成员”都是一个基本数据类型或又是一个构造类型。
在C语言中,构造类型有以下几种:·数组类型·结构类型·联合类型3.指针类型指针是一种特殊的,同时又是具有重要作用的数据类型。
其值用来表示某个量在内存储器中的地址。
虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。
4.空类型在调用函数值时,通常应向调用者返回一个函数值。
这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明,例如在例题中给出的max函数定义中,函数头为: int max(int a,int b);其中“int ”类型说明符即表示该函数的返回值为整型量。
又如在例题中,使用了库函数 sin,由于系统规定其函数返回值为双精度浮点型,因此在赋值语句s=sin (x);中,s 也必须是双精度浮点型,以便与sin函数的返回值一致。
所以在说明部分,把s说明为双精度浮点型。
但是,也有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”。
其类型说明符为void。
在第五章函数中还要详细介绍。
在本章中,我们先介绍基本数据类型中的整型、浮点型和字符型。
其余类型在以后各章中陆续介绍。
对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。
在程序执行过程中,其值不发生改变的量称为常量,取值可变的量称为变量。
它们可与数据类型结合起来分类。
例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。
基本数据类型、运算符和表达式(总分:56.00,做题时间:90分钟)一、选择题(总题数:21,分数:42.00)1.阅读下面程序public static void main (String[] args)System.out.printIn (34+56-6);System.out.printIn (26*2-3);System.out.printIn (3*4/2);System.out.printIn (5/2);程序运行结果是______。
(分数:2.00)A.844962 √B.902562.5C.8423122D.6849142.5解析:[解析] 第一条输出语句中,+、-是同优先级的运算符,按照左结合的原则,表达式34+56-6的值应该是84。
第二条输出语句中,*的优先级高于-,先算26*2=52,再进行减法运算:52-3=49。
第三条输出语句中,+与/是同优先级的运算符,按照左结合可以得到3*4/2的值为6。
第四条输出语句中,两个整型数据做除法运算,其结果也应该为整型数据,所以结果是2,而不是2.5。
2.下列属于合法的Java标识符是______。
(分数:2.00)A."ABC"B.&5678C.+rriwoD.saler √解析:[解析] Java中所有的变量、常量、对象和类都用标识符命名,其命名规则为:(1)只能以字母、下画线、美元符($)作为首字符,不能用数字或其他符号(如*)作为标识符的首字符。
(2)标识符是区分大小写的。
只有D项是正确的。
3.阅读下面程序public class OperatorsAndExpressionsvoid equalsMethodl()String s1=new String("how are you");String s2=new String("how are you");System.out.printIn (s1==s2);public static void main (String args[])OperatorsAndExpressions OperAndExp=new OperatorsAndExpressions();//用于复合类型数据的"= ="运算符OperAndExp.equalsMethodl();程序运行结果是______。
(分数:2.00)A.==B.trueC.false √D.equal解析:[解析] 本程序的运行结果应该是表达式s1=s2的结果。
字符串对象s1和s2是复合数据类型,因而表达式s1=s2比较的是s1和s2是否是同一个对象。
本题中s1和s2虽然有相同的值“how are you”,但它们是两个不同的对象,所以本题的结果是false。
若要比较两个对象的值,可以调用equals()方法。
4.下列代码中,将引起编译错误的行是______。
1) public class Exercise2) public static void main (String args[])3)float f=0.0;4) f+=1.0;5)6)(分数:2.00)A.第2行B.第3行√C.第4行D.第6行解析:[解析] float f=0.0;语句中,想要定义一个float型变量f,并且赋初值为0.0,但是数字后面没有跟任何字母,计算机默认为double类型,而从double类型不能自动转换为float,所以该语句将引起编译错误。
5.阅读下面程序public class Test2public static void main (String args[])int a=10, b=4, C=20, d=6;System.out .printIn(a++*b+c*--d);程序运行的结果是______。
(分数:2.00)A.144B.160C.140 √D.164解析:[解析] 表达式a++*b+c*--d中,++、一的优先级最高,a++运算返回结果为10,--d运算返回结果为5;然后进行两个*运算,10*b=40,20*5= 100;最后进行加法运算,所以最终结果为140。
这里要注意的是:x++与++x是有区别的:x++在使用x后将x加1,整个表达式的值为x;而++x是在使用x之前将x加1,故整个表达式的值为x+1。
6.阅读下列代码public class Test2005public static void main (String args[])System.out.printIn(~(Oxa5) &Oxaa);其运行结果是______。
(分数:2.00)A.Oxa5B.10 √C.Ox50D.Oxaa解析:[解析] 十六进制数0xa5的二进制形式为位10100101,0xaa的二进制形式为10101010。
在位运算符中,“~”的优先级高于“&”,所以先计算~10100101,其结果为01011010,然后计算01011010&10101010,其结果是00001010,将其转换为十进制数,即为10。
所以正确选项为B。
7.下列代表十六进制整数的是______。
(分数:2.00)A.0123B.1900C.fa00D.Oxa2 √解析:[解析] 整型常量分3种书写格式:十进制整数,如139,-3,35;八进制整数,以0开头,如012表示十进制数10;十六进制数,以0x或0X开头,如0x123表示十进制数291。
选项A是八进制整数,选项B是十进制整数,选项C不是整数,只有选项D是正确选项。
8.阅读下面程序import java.io.*;public class TypeTransitionpublic static void main (String args[])char a='h';int i=100;int j=97;int aa=a+i;System.out.printIn( "aa="+aa);char bb= (char)j;System.out.printIn("bb="+bb);如果输出结果的第二行为bb=a,那么第一行的输出是______。
(分数:2.00)A.aa=IB.aa=204 √C.aa=vD.aa=156解析:[解析] Java语言规定,char型数据可以自动转换成int类型,转换的结果就是该字符的ASCⅡ码值。
由题目给出的第二行输出为bb=a,知道a的A SCⅡ值为97,则b的ASCⅡ值为98,依次类推得到h的ASCⅡ码值为104,所以aa=104+100,结果自然就是204。
所以正确选项为B。
9.下列标识符(名字)命名原则中,正确的是______。
(分数:2.00)A.类名的首字母小写B.变量和方法名的首字母大写C.接口名的首字母小写D.常量完全大写√解析:[解析] Java中针对变量、常量、类名、方法名、接口名的命名规则如下:_、$不作为变量名、方法名的开头;变量名、方法名首单词小写,其余单词首个字母大写;接口名、类名首个单词第一个字母大写;常量完全大写。
根据以上规则可知选项D是正确的。
10.下列叙述中,正确的是______。
(分数:2.00)A.声明变量时必须指定一个类型√B.Java认为变量number与Number相同C.Java中唯一的注释方式是"//"D.源文件中public类可以有0或多个解析:[解析] Java中声明变量时,必须指定类型,否则将出错。
Java标识符是区分大小写的。
Java中有3种注释方式:文档注释/**...*/,C语言注释风格/*...*/,单行注释//,格式上要求注释符//后必须紧跟一个空格。
源文件中public类最多只有1个,所以选项D不正确。
11."++"运算符的操作数个数是______。
(分数:2.00)A.1个√B.2个C.3个D.4个解析:[解析] 按运算符的操作数的数目划分,可以分为:一元运算符:++、--、+、-;二元运算符:+、-、>;三元运算符:? : 。
所以本题正确答案是A。
12.阅读下面程序public class Incrementpublic static void main (String args[]int c;c=5;System.out.printIn(c);System.out.printIn(c++)jSystem.out.printIn (c);程序运行结果是______。
(分数:2.00)A.566B.556 √C.677D.666解析:[解析] 本程序中,变量c的初值为5,第一条输出语句输出其初值;第二条输出语句先输出c的值,再将c加1,故第二条仍输出5;执行第三条输出语句时,c已经加1变为6,所以输出的结果为6。
根据以上分析可知本题正确答案为B。
13.请阅读下面程序public class OperatorsAndExpressionsvoid residual()int i=100.j=30;float m=563.5f,n=4.0f;System,out.printIn (i%j);System, .out.printIn (m%n);public static void main (String args[])OperatorsAndExpressions OperAndExp=new OperatorsAndExpressions();//取模运算在整数和浮点数中的应用OperAndExp.residual();程序运算结果是______。
(分数:2.00)A.103.5 √B.202.5C.104.5D.-203.5解析:[解析] 解析过程同上题。
14.下列布尔变量定义中,正确并且规范的是______。
(分数:2.00)A.BOOLEAN canceled=false;B.boolean canceled=false; √C.boolean CANCELED=false;D.boolean canceled=FALSE;解析:[解析] Java中的标识符是区分大小写的,boolean、false都是其中的关键字,大写后不正确,故选项A和C都不正确。
Java中的变量名一般为小写,只有常变量才用大写,所以选项C也不正确。
正确选项是B。
15.下列运算符不能进行位运算的是______。
(分数:2.00)A.>>B.>>>C.<<D.<<<√解析:[解析] 位运算符有:>>、<<、>>>、&、|、^、~。
其中>>表示算术右移,<<表示算术左移,>>>表示逻辑右移。
没有<<<运算,故选项为D。