数据类型和表达式.ppt_第1页
数据类型和表达式.ppt_第2页
数据类型和表达式.ppt_第3页
数据类型和表达式.ppt_第4页
数据类型和表达式.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第五章 数据类型和表达式,学习目标 了解不同数据类型的存储格式; 掌握C语言中三种基本数据类型极其常量变量的使用方法; 掌握各种运算符和表达式的使用方法; 掌握运算符的优先级; 掌握数据类型的转换规则。,2,本章要点,不同类型数据在内存中的存储格式 C语言中的基本数据类型有哪些? C语言中的运算符和表达式如何使用? 不同类型的数据之间如何转换?,3,5.1 数据的存储格式,数据在计算机内存中都是以二进制形式存储的,但是不同类型的数据,其存储的格式不尽相同,包括: 1.整型数据的存储格式 2.实型数据的存储格式 3.字符型数据的存储格式,4,5.1 数据的存储格式,整型数据的存储格式 整型数据在内存中是以补码形式存储。 整型数值可以采用原码、反码和补码不同的形式表示。 正数的原码、反码和补码相同,符号位是0,其余各位表示数值,如数值8转换成二进制为1000,其内存中形式为:,5,5.1 数据的存储格式,整型数据的存储格式 负数的原码、反码和补码则不同: (1)原码:符号位是1,其余各位表示数值的绝对值。 (2)反码:符号位是1,其余各位对原码取反。 (3)补码:反码加1。 -8的原码是: -8的反码是: -8的补码是:,6,5.1 数据的存储格式,整型数据的存储格式 两个字节的存储单元能表示的最大正数是215-1,即32767,其补码形式为: 两个字节的存储单元能表示的最小负数是-215,7,5.1 数据的存储格式,整型数据的存储格式 无符号整数用全部16位二进制位来表示数值大小。因此无符号整数能表示的最大整数为216-1,即65535: 最小的整数为0:,8,5.1 数据的存储格式,实型数据的存储格式 实型数据一般占4个字节内存空间。按指数形式存储。例如实数3.14159首先需要转换成指数形式0.314159e+01,其在内存中的存储形式如下: 实型数据的存储规律: 1)小数部分占的位数愈多,数值的有效数字愈多,精度愈高。 2)指数部分占的位数愈多,则能表示的数值范围愈大。,数符,小数部分,指数,9,5.1 数据的存储格式,字符型数据的存储格式 每个字符变量被分配一个字节的内存空间,存储的是字符的ASCII码(ASCII码见附录A)。例如,字符C的ASCII码是67,用二进制表示为1000011,在内存中以下列形式存储:,10,5.2 基本数据类型,表5-1 基本数据类型,11,5.2.1 整型,整型是指不存在小数部分的数据类型,可分为有符号类型(signed)和无符号类型(unsigned)。 int类型是计算机所给出的整数的正常大小。 由于16位整数的上限值为215-1,这会对许多应用产生限制,所以C语言还提供了长整型(long)。 而某些时候,为了节省空间,需要使用存储空间较小的数值,称之为短整型(short)。,12,5.2.1 整型,整型常量 整型常量就是整常数或整数,只要整型常量的数值不超过表5-1中列出的整型数据的取值范围,它就是合法的常量。 C语言允许使用十进制、八进制和十六进制形式书写整型常量: 1)十进制整数:由正、负号和阿拉伯数字09组成,但是首位数字不能是0。如:10。 2)八进制整数:由正、负号和阿拉伯数字07组成,首位数字必须是0。如:010。 3)十六进制整数:由正、负号和阿拉伯数字09、英文字符af或AF组成,首位数字前必须有前缀0x或0X。如0x10。,13,5.2.1 整型,整型常量 当程序中出现整型常量时,如果它属于int类型的取值范围,那么编译器会把此常量作为普通整型来处理,否则作为长整型来处理。 为了迫使编译器把常量作为长整型来处理,只需在数值后面加上一个字母L或l:-123L、0123L。而为了指明是无符号常量,可以在常量后面加上字母U或u:123U、0x123U。 注意: 八进制和十六进制只是数值书写的另一种形式,它们不会对数值实际存储的方式产生影响(整数都是以二进制形式存储的,而不考虑实际书写的方式)。任何时候都可以从一种形式转换为另一种形式。,14,5.2.1 整型,整型数据的输入与输出 使用printf和scanf函数。 在计算机中一旦定义了整形变量的类型,其内存字节数和存储形式是确定的。但是必须注意对于同一个整数其常数的书写格式有多种(十进制、八进制、十六进制),且输入、输出的格式也有多种(%d、%u、%o、%x、等),15,5.2.1 整型,程序示例,/*用%d、%o和%x输入输出整型数据*/ #include void main(void) int a, b, c; printf(“输入a,b,c,分别为八进制、十进制和十六进制:n“); scanf(“%o%d%x“, ,头文件,地址符,输出结果,输入a,b,c,分别为八进制、十进制和十六进制: 10 10 10 10,8,8 12,10,a 20,16,10 Press any key to continue,16,5.2.2 实型,实型数据分为: float:单精度实型 double:双精度实型 一般,单精度实型在内存中占4个字节,有效数字为6位;双精度实型占8个字节,有效数字为15位。,17,5.2.2 实型,实型常量 在C语言中,实数只采用十进制表示形式,可以用浮点表示法和科学计数法表示。 1)浮点表示法:实数由正号、负号、阿拉伯数字09和小数点组成,必须有小数点,并且小数点前、后至少一边要有数字。实数的浮点表示法又称实数的小数形式。如3.14、.123、10.0等。 2)科学计数法:实数由正号、符号、阿拉伯数字09、小数点和字母e或E组成。e是指数的标志,在e之前要有数据,e之后的指数只能是整数。实数的科学计数法又称实数的指数形式。如0.314e1表示0.314101、31.4e-1表示31.410-1。 默认情况下,实型常量都是以双精度的形式存储。,18,5.2.2 实型,实型数据的输入和输出 用函数scanf和printf实现实型数据的输入和输出。 输出实型数据时,单精度和双精度实型数据使用相同的格式控制说明; 输入实型数据时,格式控制说明可以通用,但是,输入double型数据时,在格式控制说明中必须加限定字母l,否则输入变量将无法得到正确的输入数据。,19,5.2.2 实型,程序示例,/*使用基本格式说明符输入输出实型数据 */ #include void main(void) float f; double d; scanf(“%f“, ,格式说明符,输出结果,123.456 3.1415926 123.456001,1.234560e+002 3.142, 3.14,3.14 Press any key to continue,20,5.2.3 字符型,每个字符数据在内存中占用一个字节,用于存储它对应的ASCII码值。所以C语言中的字符具有数值特征,不但可以写成字符常量的形式,还可以用相应的ASCII码表示,即可以用整数来表示字符。 例如:a的ASCII码值为97,A的ASCII码值为65,而空格 的ASCII码值为32。,21,5.2.3 字符型,字符型常量 1)字符型常量指单个字符,用一对单引号及其括起来的字符来表示,如a,B,9,*,都是合法的字符常量。 注意:1和1的区别,一个是数值1,一个字符1其对应的ASCII码值为49。,22,5.2.3 字符型,字符型常量 2)转义字符是一种特殊的字符常量。转义字符以反斜线“”开头的字符序列。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。,23,5.2.3 字符型,字符型数据的输入与输出 字符的输入输出可以调用函数scanf、printf、getchar和putchar。 在使用scanf和printf函数调用时,格式控制说明为%c。如: char ch1, ch2, ch3; scanf(“%c%c%c”, 在输入多个字符时,这些字符之间不能有空格,由于空格本身也是字符,它作为输入字符看待。 a b c 则ch1 = a,ch2 = ,ch3 = b 注意:字符输入时,不需要单引号。,24,5.2.3 字符型,字符型数据的输入与输出 每次调用getchar函数时,它会读入一个字符,并返回这个字符。例如: ch = getchar(); getchar函数也不会在读入数据时跳过空格字符。 putchar函数用来输出单个字符,例如: putchar(ch); scanf和printf可以一次输入输出多个字符,而getchar和putchar一次则只能输入输出一个字符 while(ch = getchar() != n); 这段程序用于输入多个字符,当碰到回车换行时结束,这也是getchar函数的最常用的方法。,25,5.2.3 字符型,程序示例,/*输入一串字符,以回车作为结束符,统计输入字符的个数 */ #include void main(void) char ch; int number = 0; printf(“输入一串字符,以回车结束:“); while(ch = getchar() != n) /*如果字符不是回车,数量加1*/ number+; printf(“一共输入了%d个字符n“, number); ,输出结果,输入一串字符,以回车结束:abcd efgh ijkl mn 一共输入了17个字符 Press any key to continue,26,5.3 运算符与表达式,运算符是描述对数据进行特定运算的符号,如+、*等。 表达式是由运算符和运算项(操作数)组成的有意义的运算式子,最简单的表达式是常量和变量,较为复杂的表达式是由多个运算符和运算项构成。 C语言的运算符不仅具有不同的优先级,而且具有结合性。在表达式中,各操作数参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。,27,5.3 运算符与表达式,28,5.3.1 赋值表达式,赋值运算符 C语言将赋值作为一种运算,赋值运算符=的左边必须是一个变量,作用是把一个表达式的值赋给一个变量。 赋值运算符的优先级较低,仅比逗号运算符高,它的结合方向是从右向左。 例如: x=2+3等价于x=(2+3) x=y=1等价于x=(y=1),29,5.3.1 赋值表达式,赋值表达式 用赋值运算符将一个变量和一个表达式连接起来的式子成为赋值表达式。赋值表达式的简单形式为: 变量=表达式; 表达式可以是常量、变量或较为复杂的表达式,例如: i = 5; j = i; k = i + 5 * j;,30,5.3.1 赋值表达式,赋值表达式 如果表达式的类型与变量的类型不同,那么赋值运算符会把表达式的值转化为变量的类型在赋值,例如: int i; float f; f = 3; /*f is 3.0*/ f = 3.14; /*f is 3.14*/ i = f; /*i is 3 and f is 3.14*/ 在赋值表达式中,赋值运算符右侧的表达式也可以是一个赋值表达式,例如: x=(y=2);,31,5.3.1 赋值表达式,复合赋值运算符 C语言提供了一种复合赋值运算符,其一般形式为: 变量 复合赋值运算符 表达式; exp作为一个整体参与计算,如:x*=y+5,等价于x=x*(y+5),而不是x=x*y+5。,32,5.3.2 算术表达式,算法运算符 算术运算符分为单目运算符和双目运算符,单目运算符只需要一个操作数,而双目运算符需要两个操作数。 典型的单目运算符使用方法 j = -1; 双目运算符与我们平时接触的数学算术运算基本相同,33,5.3.2 算术表达式,算法运算符 运算符+、-和*,其两端的运算项的类型可以都是整数或者都是实数,也可以使两者混合。计算机处理的过程是,先将整形操作数转化成实型 当两个操作数都是整数时,运算符/只保留整数部分作为运算结果。因此,1/2的值是0而不是0.5。 运算符%是整数取余运算符,如10%3的值是1。,34,5.3.2 算术表达式,算术运算符的优先级和结合性 算法运算符中单目运算符+和-优先级最高,其次是*、/和%,最低是双目运算符+和-,这一点与数学中的习惯相同。 当同一优先级的运算符出现是,计算顺序应该根据其结合性确定。单目运算符+和-的结合性是从右到左,而其他算术运算符的结合性都是从左到右。 例如: -+i 等价于 -(+i) i*j/k 等价于 (i*j)/k i+j-k 等价于 (i+j)-k,35,5.3.2 算术表达式,算术表达式 用算法运算符将操作数连接起来的符合C语言语法规则的式子称为算术表达式,操作数包括常量、变量和函数等表达式。 例如求一元二次方程ax2+bx+c=0的根为: x = (-b + sqrt(b*b - 4*a*c)/(2*a);,36,5.3.3 自增、自减运算符,循环程序设计中,“自增”和“自减”是变量中最常用的两个操作 i = i+1; 复合赋值运算符可以使得语句缩短一些 i += 1; C语言允许+(自增)和-(自减)运算符将使这些语句更加简短,其作用与上述语句功能相同 i+; +i;,37,5.3.3 自增、自减运算符,自增、自减运算符的使用规则: 1)+i的运算顺序是:先执行i = i + 1,再将i的值作为表达式+i的值。 2)i+的运算顺序是:先将i的值作为表达式i+的值,再执行i = i + 1。 自增和自减运算符只能用于变量,而不能用于常量和表达式。,38,5.3.3 自增、自减运算符,优先级和结合性 自增和自减运算符的优先级与单目+和-相同,高于算术运算符和赋值运算符。 在i=5;k=i+;中,先计算表达式i+。根据自增运算符运算顺序,取i的值作为整个表达式的值,因此k的值是5。之后在执行i=i+1。 负号运算符和自增运算符的优先级相同,按照结合方向来决定计算的次序 -i+等价于-(i+),变量i先和+结合,再同-结合。,39,5.3.3 自增、自减运算符,复杂的应用 思考下面的语句,i、j和k的值分别是多少? i = 1; j = 2; k = +i + j+; 根据运算符的优先级,最后一句可表示为:k = (+i)+(j+),即i在使用前进行自增,而j在使用后自增,所以其等价于: i = i+1; k = i+j; j = j+1;,40,5.3.4 关系表达式,关系运算符 C语言的关系运算符和数学中的,运算符相对应,都是双目运算符,用于对两个操作数进行比较。 只是前者在C语言的表达式中产生的结果是1(真)和0(假)。例如,表达式56的值是1,而表达式65的值0。,41,5.3.4 关系表达式,关系运算符的优先级和结合性 关系运算符的优先级低于算术运算符,高于赋值运算符。 例如: i+jc等价于d=(a+b)c)。 在所有的关系运算符中,=的优先级又高于=和!=。例如: ij=jk等价于(ij)=(jk)。,42,5.3.4 关系表达式,关系运算符的优先级和结合性 关系运算符的结合方向是从左向右。例如: x=3=5等价于(x=3)=5。 需要注意的是:ijk在C语言中是合法的,但是它不是所期望的数学中的i小于j而j又小于k。因为运算符是左结合的,所以这个表达式等价于: (ij)k,43,5.3.4 关系表达式,关系表达式 用关系运算符将两个操作数连接起来的式子,称为关系表达式。关系表达式的值反映了关系运算的结果,它是一个逻辑量,取值为“真”或者“假”。 在C语言中,就用整数1代表逻辑量“真”,0代表逻辑量“假”。也就是说,关系表达式的结果只能是1或0,类型为整型,其代表的含义是表达式为真或假。,44,5.3.4 关系表达式,关系表达式,/*关系运算符示例*/ #include void main(void) char c = k; int i = 1, j = 2, k = 3; float x = 1000, y = 0.85; printf(“%3d“, a + 5 = k + 1); printf(“%3d“, 1 j 5); printf(“%3d“, x - 5.25 = x + y); printf(“%3d“, i + j + k = -2*j); printf(“%3d“, j-1 = i != k); printf(“%3dn“, k = j = i + 5); ,输出结果,1 0 1 1 0 1 0 Press any key to continue,45,5.3.5 逻辑表达式,逻辑运算符 逻辑运算对象是关系表达式或者逻辑量,逻辑运算产生的结果也是一个逻辑量,与关系运算一样,用整数1代表逻辑量“真”,0代表逻辑量“假”。逻辑运算符将任何非零值的操作对象都作为“真”值来处理,同时将任何零值的操作对象作为“假”值来处理。,46,5.3.5 逻辑表达式,逻辑运算符 假设x和y是逻辑量,对x和y可以进行的基本逻辑运算包括!x(或!y)、x&y和x|y3种。作为逻辑量,x和y的值只能是“真”或“假”,所以x和y可能的取值组合只有4种,见下表,47,5.3.5 逻辑表达式,逻辑运算符 逻辑运算符&和|都对操作对象进行“短路”计算。也就是说,这些运算符首先计算出左侧操作对象的值,然后再计算后侧操作对象;如果表达式的值可以由左侧操作对象的值单独推导出来,那么就不计算右侧操作对象的值。 例如表达式: (i!=0)&(j/i0) 为了得到表达式的值,首先必须计算表达式(i!=0)的值,如果i不等于0,那么需要计算表达式(j/i0)的值,从而确定整个表达式的值是真还是假。但是如果i等于0,那么整个表达式的值一定为假,所以就不需要计算法表达式(j/i0)的值了。,48,5.3.5 逻辑表达式,逻辑运算符的优先级和结合性 在逻辑运算符中,逻辑非!的优先级最高,逻辑与&次之,逻辑或|最低。例如: a|b&c等价于a|(b&c) !a&b等价于(!a)&b !a=2等价于(!a)=2 逻辑与&和逻辑或|的结合性都是左结合,逻辑非的结合性为右结合。例如: a&b&c等价于(a&b)&c a|b|c等价于(a|b)|c !a等价于!(!a),49,5.3.5 逻辑表达式,逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子,称之为逻辑表达式。逻辑运算对象的值为“真”或“假”的逻辑量,它可以是任何类型的数据,C语言中以非0和0判定逻辑量为真或假。 【例5-5】输入一个年份,判断该年份是否是闰年? 题目分析: 要想判读一个年份是否为闰年,首先需要知道闰年的含义。一个年份为闰年需要满足以下两个条件之一: (1) 年份能被4整除,但不能被100整除; (2) 年份能被400整除。,50,5.3.5 逻辑表达式,逻辑表达式 从这两个条件中我们可以构造出判断闰年的逻辑表达式。设year为待判断年份,第一个条件可表示为(year%4 = 0) & (year%100 != 0),第二个条件可表示为(year%400 = 0)。由于两个条件满足其一即可,是或的关系,所以最终的闰年判断条件是: (year%4 = 0) & (year%100 != 0) | (year%400 = 0),#include “stdio.h“ void main(void) int year; printf(“输入一个年份:“); scanf(“%d“, ,输出结果,输入一个年份:2000 该年份是闰年 Press any key to continue,51,5.3.6 条件表达式,条件运算符和条件表达式 条件运算符是C语言中唯一的一个三目运算符,它将3个表达式连接在一起,组成条件表达式。条件表达式的一般形式是: 表达式1? 表达式2: 表达式3; 条件表达式的运算过程是:先计算表达式1的值,如果它的值为非0(真),将表达式2的值作为条件表达式的值,否则,将表达式3的值作为条件表达式的值。 例如: (ab)? a: b; 其含义为:如果a大于b,则整个表达式的值为a的值,如果a不大于b,则整个表达式的值为b的值。,52,5.3.6 条件表达式,条件运算符的优先级和结合性 条件运算符的优先级较低,仅高于赋值运算符和逗号运算符,低于关系运算符和算术运算符。条件运算符的结合方向是自右向左。 例如: max=(ab)? a: b); 其作用是将a和b中的最大值赋给max,可以写为max=ab?a:b。 再如: ab? a: cd? c: d 等价于ab?a: (cd?c:d),该条件表示中的表达式3本身又是一个条件表达式。,53,5.3.6 条件表达式,条件运算符的优先级和结合性 在使用条件表达式时,需要注意条件运算符?和:是一个整体运算符,不能分开单独使用。 条件表达式不能写作: (ab)? printf(“max=a“): ;,54,5.3.6 条件表达式,条件运算符的优先级和结合性 【例5-7】输入一串字符,将其中的字母字符大小写互换,输出互换后的字符串,要求用条件表达式实现。,/*输入一串字符,将字母字符大小写互换,输出互换后的字符串,用条件表达式实现。*/ #include “stdio.h“ void main(void) char ch; ch = getchar(); while(ch != n) ch=(ch=a ,55,5.3.7 逗号表达式,逗号运算符和逗号表达式 在C语言中,逗号既可以作为分隔符,又可以作为运算符。逗号作为分隔符使用时,用于间隔说明语句中的变量或函数中的参数,例如: int a, b, c; printf(“%d,%d“, x, y); 逗号作为运算符使用时,将若干个独立的表达式连接在一起,组成逗号表达式。逗号表达式的一般形式是: 表达式1, 表达式2, , 表达式n 运算过程为:先计算表达式1的值,然后计算表达式2的值,一直计算到表达式n的值,将表达式n的值作为逗号表达式的值,将表达式n的类型作为逗号表达式的类型。,56,5.3.7 逗号表达式,逗号运算符和逗号表达式 例如,设i,j和k都是整型,计算逗号表达式 (i=1), (j=2), (k=i+j); 该表达式由3个独立的表达式通过逗号运算符连接而成,从左到右一次计算这3个表达式,该逗号表达式的值和类型由最后一个表达式k=i+j决定,其值是3,类型是整型。,57,5.3.7 逗号表达式,逗号运算符的优先级和结合性 逗号运算符的优先级是所有运算符中最低的一个,它的结合性是从左到右,所以上面的逗号表达式等价于 i=1, j=2, k=i+j。,58,5.3.7 逗号表达式,典型应用 逗号表达式最常用的使用方法是在for循环语言中的表达式1和表达式3。由于for循环语句中要求只能有3个表达式,那么当需要初始化的数据不只一项时,可以使用逗号表达式简化程序书写。 例如: sum = 0; for(i = 1;i = n; i+) sum += 1; 可以改写为: for(sum = 0, i = 1;i = n; i+) sum += 1;,59,5.3.8 位运算,位运算是C语言与其他高级语言相比较的一个特性,利用位运算,可以实现汇编语言才能实现的功能。 位运算是指对存储单元中的数按二进制位进行运算符的方法。例如:将一个存储单元中的各二进制位左移或右移一位,将一个数的某二进制位置成1或者0等。,60,5.3.8 位运算,位逻辑运算符 位逻辑运算符有如下4种 位逻辑运算符的运算规则:先将两个操作数化为二进制数,然后按位运算。,61,5.3.8 位运算,位逻辑运算符 下面的例子说明运算符、 /*k is 61 00000000 00111101*/ 对于位运算符,有几个特殊的用途: 1)aa的值为0。 2)aa的值为二进制全1(如果a以16位二进制数表示,则为65535)。 3)(aa)的值是0。,62,5.3.8 位运算,位逻辑运算符 【例5-8】读入一个整数,将其第5位取反。,/*读入一个整数,将其第5位取反*/ #include “stdio.h“ void main(void) int i; printf(“输入一个整数:“); scanf(“%d“, ,输出结果,输入一个整数:17 取反后的值为:1 Press any key to continue,63,5.3.8 位运算,移位运算符 移位运算是指对操作数以二进制位为单位进行左移或右移的操作。移位运算符有两种:(右移)和b表示将a的二进制值右移b位,ab表达将a的二进制值左移b位。要求a和b都是整数,b只能为正数,且不能超过机器字所表示的二进制位数。 通常实现中,左移位运算后右端出现空位补0,移出左端之外的位舍弃;右移运算与操作数的数据类型是否带有符号位有关,不带符号位的操作数右移位时,左端出现的空位补0,移出右端之外的位舍弃,带有符号位的操作数右移位时,左端出现的空位按符号位复制,移出右端之外的位舍弃。,64,5.3.8 位运算,移位运算符 例如,整型x=8=00000000 00001000 x=x2,结果为x=2=00000000 00000010右端舍弃了00,左端补上00。 在数据可表达的范围里,一般左移一位相当于乘2,右移一位相当于除2。 又如:整型x=-10=11111111 11110110 x=x2,结果为x=-3=11111111 11111101 右端舍弃了10,左端补上11。 需要注意的是:操作数的移位运算并不改变操作数的值,只有通过赋值才能改变操作数的值,即x2时,x的值没有发生变化,只有x=x2时x的值才改变。,65,5.3.8 位运算,移位运算符 【例5-9】将整型变量a中高字节和低字节中的内容对调。,/*将整型变量a中高字节和低字节中的内容对调。*/ #include “stdio.h“ void main(void) int a=0x1122,b,c; printf(“a=0x%xn“,a); /*用16进制形式输出a的值*/ b = (a ,输出结果,a=0x1122 对调后:0x2211 Press any key to continue,66,5.3.9 其他运算符,长度运算符 长度运算符sizeof是一个单目运算符,用来返回变量或数据类型的字节长度。如,设i是整型数据,则sizeof(i)的值为4。而sizeof(int)是获得整型数据的字节长度,一般值为4,sizeof(double),值为8。,67,5.3.9 其他运算符,特殊运算符 C语言中还有一些比较特殊的、具有专门用途的运算符。例如: 1)( )括号:用来改变运算顺序。 2) 下标:用来表示数组元素。 3) *和&:与指针运算相关。 4)和:用来表示结构分量。,68,5.4 类型转换,C语言允许在表达式中混合使用基本数据类型,计算机在运算表达式时,通常要求各个操作数有相同的存储方式。也就是说计算机可以直接将两个16位整数相加,但是不能直接将16位整数和32位整数相加,也不能直接将32位整数和32位浮点数相加。 因此,对表达式运算之前,需要将操作数转换为同一数据类型,这就是C语言中的类型转换。类型转换分为自动类型转换和强制类型转换,而自动类型转换又分为非赋值类型转换和赋值类型转换。,69,5.4.1 非赋值类型转换,在运算时,系统先按各个运算符的优先级确定运算步骤。在进行每一步运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论