《基本数据类型、运算符和表达式》由会员分享,可在线阅读,更多相关《基本数据类型、运算符和表达式(34页珍藏版)》请在金锄头文库上搜索。
1、 第二讲第二讲 基本数据类型、运算符和表达式基本数据类型、运算符和表达式数据类型数据类型数据类型的作用:1、为数据分配存储空间做为依据2、规定数据所能做的操作数据类型数据类型数据类型基本类型基本类型构造类型构造类型整型整型基本整型基本整型(int)短整型短整型(short int)长整型长整型(long int )无符号整型无符号整型(unsigned int)实型实型单精度型(单精度型(float)双精度型(双精度型(double)字符型字符型charunsigned char空类型空类型(void)布尔型布尔型(bool)指针指针数组数组结构型结构型(struct)共用体共用体(union
2、)枚举枚举(enum)类类(class)数据类型存储和数据范围数据类型存储和数据范围数据类型占字节数范围bool1false(0)或true(1)char1-128127unsigned char10255short int 2-215(215-1)int4-231(231-1)unsigned int40(232-1)long4-231(231-1)float4(3.4X10-383.4X1038)double8(1.7X10-3081.7X10308)变量变量变量是在程序运行过程中其值可以变化的量变量的定义: 数据类型 变量名1,变量名2,变量名n; 如:char c1,c2;变量的初始化
3、:在定义变量的同时指定变量的值 数据类型 变量名=表达式;或 数据类型 变量名(表达式); 如:int k=35,n(0); 常量常量常量是指在程序运行过程中其值不变的量形式: 值常量和符号常量整型常量整型常量 整型数据表示通常意整型数据表示通常意义义上的整数,整型常量可以用十上的整数,整型常量可以用十进进制、制、八八进进制或十六制或十六进进制表示。制表示。1.十十进进制常量制常量一般占一个机器字一般占一个机器字长长,是一个,是一个带带正正负负号的常数(默号的常数(默认认情况下情况下为为正数),如正数),如+3,-7等。等。2.八八进进制常量制常量 由数字由数字0开开头头,其后由若干,其后由若
4、干07的数字的数字组组成,如成,如0378,0123等。等。3. 十六十六进进制常量制常量 以以0x或或0X开头,其后由若干开头,其后由若干09的数字及的数字及AF(或小写(或小写af)的字母组成,如)的字母组成,如0x173,0x3af。 整型常量整型常量 整型常量可以后跟字母l或L表示long型(长整数),也可以跟u或U表示unsigned整数(无符号整数),如以下数是合法的:375u/无符号整数12345UL/无符号长整数54321L /长整数 13579ul/无符号长整数浮点数常量浮点数常量 浮点数也称为实型数。只能以十进制形式表示。共有两种表示形式:小数表示法和指数表示法。1. 小数
5、表示法小数表示法 使用这种表示形式时,实型常量分为整数部分和小数部分。其中的一部分可在实际使用时省略,如10.2,.2,2.等。但整数和小数部分不能同时省略。2. 指数表示法指数表示法 也称科学记数法,由尾数、指数符号E(或e)和指数部分共同构成;E(或e)前面必须要有数字,后面的数字一定为整数,如1.2e20,-3.4e-2。 字符常量与字符串常量字符常量与字符串常量1. 字符常量字符常量C+中的字符常量通常是用单引号括起的一个字符。在内存中,字符数据以ASCII码存储,如字符a的ASCII码为97。字符常量包括两类,一类是可显字符,如字母、数字和一些符号 、+等,另一类是不可显字符常量,如
6、ASCII码为13的字符表示回车。2. 转义字符转义字符转义字符是特殊的字符常量,表示时一般以转义字符开始,后跟不同的字符表示不同的特殊字符,表2-1列出了常用的特殊字符。 表表2-1 2-1 常用的特殊字符常用的特殊字符名称符号空字符(null)0换行(newline)n换页(formfeed)f回车(carriage return)r退格(backspace)b响铃(bell)a水平制表(horizontal tab)t垂直制表(vertical tab)v反斜线(backslash)问号(question mark)?单引号(single quote)双引号(double quote)”
7、ddd1到3位八进制数所代表的字符xhh1到2位十六进制数所代表的字符字符串常量字符串常量 字符串常量是由一对双引号括起来的零个或多个字符序列。 字符串常量实际上是一个字符数组,组成数组的字符除显示给出的外,还包括字符结尾处标识字符串结束的符号0,所以字符串“abc”实际上包含4个字符:a、b、c和0。 需要注意的是a和“a”的区别,a是一个字符常量,在内存中占一个字节的存储单元,而“a”是一个字符串常量,在内存中占两个字节,除了存储a以外,还要存储字符串结尾符0。 符号常量符号常量用const定义 形式:const 数据类型 符号常量=值常量; 如:const int MAX=999;用#d
8、efine定义 形式:#define 符号常量 值常量 如:#define PI 3.14运算符运算符1、算术运算符、算术运算符算术运算符有双目运算和单目运算两种。包括: + - * /:若两个操作数为整型,则结果也为整型 %(模运算符或称求余运算符,如7%3=1;操作数必须都为整数) 运算符运算符+:自增 x=5; y=+x;或y=x+;-:自减 x=5; y=x-;或y=-x;注:+或要求操作数必须为整型数运算符运算符2、关系运算符、关系运算符(1)关系运算符用于两个值进行比较,运算结果为true(真)或false(假),分别用值非0(true)或0(false)表示。C+中的关系运算符如
9、下: (小于), (大于), =(大于等于),=(等于), !=(不等于), (2)关系运算符都是双目运算符,其结合性是从左到右,、=运算符的优先级相同,=和!=运算符的优先级相同,前者运算的优先级高于后者。(3)关系运算符的优先级低于算术运算符。 例如:a+bc等价于(a+b)ca!=bc等价于a!=(bc) aA运算符运算符3、逻辑运算符、逻辑运算符 &(逻辑与), |(逻辑或),!(逻辑非)逻辑表达式的结果为真则为1,结果为假则为0。逻辑非(!)是单目运算符,逻辑与(&)与逻辑或(|)为双目运算符。逻辑非的优先级最高,逻辑与次之,逻辑或最低。逻辑运算真值表如表2-3所示。 运算符运算符a
10、ba&ba|b!a!b0000110非00110非000101非0非01100 表2-3 逻辑运算真值(真为非0,假为0)运算符运算符例1:x0&x2 /即0xb?a:b上面例子定义了一个求两个数a和b中最大值,其中决定哪一个是最大值用了条件运算符。运算符运算符(2)条件运算符的结合性是自右向左。例如有以下条件表达式:ab?a:cd?c:d相当于ab?a:(cd?c:d)(3)条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。例如有:ab?a-b:b-a相当于ab?(a-b):(b-a) 运算符运算符5、赋值运算符赋值运算符(1)赋值运算符“=”的一般格式为:变量=表达式;表示将
11、其右侧的表达式求出结果,赋给其左侧的变量。例如:int i;i=3*(4+5); /i的值变为27(2)赋值表达式本身的运算结果是右侧表达式的值,而结果类型是左侧变量的数据类型。例如:int i=1.2*3; /结果为3,而不是3.6 运算符运算符(3)赋值运算符的结合性是从右至左的,因此,C+程序中可以出现连续赋值的情况。例如,下面的赋值是合法的:int i,j,k;i=j=k=10; /i,j,k都赋值为10(4)复合运算符:+=(加赋值),-=(减赋值),*=(乘赋值),/=(除赋值),%=(取模赋值),=(右移赋值), &=(与赋值),=(异或赋值), |=(或赋值) 运算符运算符它们
12、的含义如下:a+=b等价于 a=a+ba-=b 等价于 a=a-ba*=b 等价于 a=a*ba/=b 等价于 a=a/ba%=b 等价于 a=a%ba=b 等价于 a=a=b 等价于 a=ab a&=b 等价于 a=a&ba=b 等价于 a=aba|=b 等价于 a=a|b 运算符运算符例如:int a=12;a+=a;表示a=(a+a)=(12+12)=24; 又例如:int a=12;a+=a-=a*=a;表示a=a*a /a=12*12=144a=a-a /a=144-144=0a=a+a /a=0+0=0运算符运算符6、逗号运算符、逗号运算符(1)逗号运算符用于将多个表达式连在一起,
13、并将各表达式从左到右的顺序依次求值,但只有其最右端的表达式的结果,作为整个逗号表达式的结果。(2)逗号表达式的一般格式为:表达式1,表达式2,表达式n例如:int a=3,b=4,c=5;a+b,b+c,c+a;则先求解a+b,再求解b+c,最后求解c+a,整个表达式的结果为c+a的结果。 运算符运算符7、sizeof运算符(求字节运算符)运算符(求字节运算符)(1)sizeof运算符是单目运算符,用于计算运算对象在内存中所占字节的多少,它有两种形式:sizeof (类型标识符);sizeof 表达式;(2)sizeof可以接受的类型标识符很多,如sizeof(int)表示求整型数据在内存中所
14、占字节数。 例如:int a,则sizeof(a)表示求变量a在内存中所占字节数。例如:int a10,则sizeof(a)表示求数组a在内存中所占字节数。 表达式表达式 表达式是用于计算的式子,它由运算符、运算数和括号组成。最简单的表达式只有一个常量或变量,当表达式中有两个或多个运算符时,表达式称为复杂表达式,其中运算符执行的先后顺序由它们的优先级和结合性决定。执行表达式所规定的运算,所得到的结果值便是表达式的值。 C+中由于运算符很丰富,因此表达式的种类也很多。常用的表达式有6种。 1.算术表达式算术表达式由算术运算符和位操作运算符组成的表达式。其表达式的值是一个数值,表达式的类型由运算符
15、和运算数确定。例如, a+3*(b/2)就是一个算术表达式。2.逻辑表达式逻辑表达式由逻辑运算符组成的表达式。其表达式的值的类型为逻辑型,一般地,真用1表示,假用0表示。例如,!a&b|c就是一个逻辑表达式。 3.关系表达式关系表达式由关系运算符组成的表达式。其表达式的值的类型为逻辑型,一般地,真用1表示,假用0表示。例如,ab!=c就是一个关系表达式。4.赋值表达式赋值表达式由赋值运算符组成的表达式。例如,已知a=b就是一个赋值表达式。5.条件表达式条件表达式由三目运算符组成的表达式。条件表达式的值取决于?号前面的表达式,该表达式的值为非0时,整个表达式的值为:号前面表达式的值,否则为:号后面表达式的值。条件表达式的类型是:号前和:号后两个表达式中类型高的一个表达式的类型。例如,ab?a:b就是一个条件表达式。6.逗号表达式逗号表达式用逗号将若干个表达式连起来组成的表达式。该表达式的值是组成逗号表达式的若干个表达式中最后一个表达式的值,类型也是最后一个表达式的类型。逗号表达式计算值的顺序是从左至右逐个表达式分别计算。例如,a+3,b+4,c+5就是一个逗号表达式。数据类型转换数据类型转换1、自动转换赋值运算转换算术混合运算内部函数内部函数数学函数、字符串函数、输入/输出函数、图形函数等