第二章 数据类型、运算符与表达式.ppt

上传人:本田雅阁 文档编号:2259703 上传时间:2019-03-12 格式:PPT 页数:89 大小:2.99MB
返回 下载 相关 举报
第二章 数据类型、运算符与表达式.ppt_第1页
第1页 / 共89页
第二章 数据类型、运算符与表达式.ppt_第2页
第2页 / 共89页
第二章 数据类型、运算符与表达式.ppt_第3页
第3页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第二章 数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第二章 数据类型、运算符与表达式.ppt(89页珍藏版)》请在三一文库上搜索。

1、第二章 数据类型、 运算符与表达式,(9FDA.4B)16 = (_)8,上节课问题回顾,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,十六进制数: 9 F D A . 4 B,二进制数:,八进制数:,117732.226,(256)7 = (_)6,上节课问题回顾,351,最终目的是:用C语言编写程序来解决实际问题!,数据

2、类型、运算符与表达式,理由1:因为C语言流行. 理由2:因为C语言考研时必考。 理由3: 因为C语言在各种程序考试中首当其中。 理由4:因为它是必修课,是老师逼的,不学不能拿学分 理由n:,为什么我们要学习C语言呢?,数据类型、运算符与表达式,沃思公式,程序是解决某种问题的一组指令的有序集合。,对数据的描述,对操作的描述,掌握变量和常量的概念; 理解各种类型的数据在内存中的存放形式; 掌握各种类型数据的常量的使用方法; 掌握各种整型、浮点型、字符型变量的定义和引用方法; 掌握数据类型转换的规则以及强制数据类型转换的方法; 掌握算术运算符、赋值运算符、逗号运算符的使用方法; 理解运算符的优先级和

3、结合性的概念,记住所学的各种运算符的优先级关系和结合性。,学习目的,数据类型、运算符与表达式,数据类型、运算符与表达式,学习内容,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,本章所介绍的数据类型,C语言的数据类型,数据类型、运算符与表达式,学习内容,变量与常量,格式:#define 符号常量 常量,例:#define NUM 20 #define PI 3.1415926,常量:程序运行时其值不能改变的量(即常数),符号常量:用标识符来代表常量。,运行结果:total = 300,行尾不能有分号 define前面一定要有# 符号常量名最好使用大写 符号常

4、量名最好有意义,#include #define PRICE 30 void main ( ) int num, total; num = 10; total = num * PRICE; printf (“total = %d“, total); ,变量与常量,/* This is the second C program */ #include void main ( ) int x, y, z; scanf (“%d%d“, ,变量与常量,格式 :数据类型 变量名1,变量名2,变量名n;,int x, y, z; float radius, length, area; char ch;,

5、决定分配字节数 和数的表示范围,合法标识符,变量:程序运行时其值可以被改变的量,变量的两要素 :变量名 、变量值,变量与常量,如何衡量变量所占空间大小?,bit,中文叫法:位 Byte,中文叫法:字节 Kilobyte(KB),中文叫法: K Megabyte(MB),中文叫法:兆 Gigabyte(GB),中文叫法:G Terabyte(TB),中文叫法:T,1 TB = 1,024 GB,1 GB = 1,024 MB,1 MB = 1,024 KB,1 KB = 1,024 B,1 B = 8 b,变量与常量,一个位有多大? 只能是“0”或者“1”,二进制 一个字节有多大? 可以表示数字

6、0255之间的整数 保存一个字符(英文字母、数字、符号) ASCII(美国标准信息交换码)编码,见 附录A,变量与常量,例1: int student; stadent = 19; /Undefined symbol statent in function main,例2: float a,b,c; c = a % b; /Illegal use of floating point in function main,变量与常量,变量与常量,数据类型、运算符与表达式,学习内容,整型数据,整型常量,十进制整数:由数字09和正负号表示,最高位非零 . 如:123,-456 八进制整数:由数字0开头,

7、后跟数字07表示.如:0123,011 十六进制整数:由0x或0X开头,后跟09,af,AF表示.如0x123,0Xff,定义整数的符号常量 #define NUM1 20 /十进制数20 #define NUM2 020 /八进制数(十进制16) #define NUM3 0x2a /十六进制数(十进制42),思考题:下列整型常量哪些是非法的? 012,oX7A,0,078,0x5Ac,-0xFFFF,0034,7B。,首字符不能是字母o,八进制数中不能有数字8,十进制数中不能有字母B,正数N的补码N补与原码N原和反码N反相同。 对于负数N,其补码N补的的符号为1,数值部分为 反码数值加1。

8、 在补码表示法中,0的表示形式是唯一的,即: 0补 0000 或 0.000 0补 0000 或 0.000,整型数据,整数在内存中的表示,整数的数值在内存中用补码的形式存放。,将上述求得的补码的低位存放于内存单元之中,就得到了该整数在内存中的表示,内存单元的最高位是符号位(0表示正,1表示负)。,整型数据,整数在内存中的表示,在TC3.0下,一个整数默认情况下需要2个字节(16位)的内存单元存放;而在VC6.0下,则需要4个字节(32位)。,例:十进制整数+14(对于16位的内存单元),符号位,(+14)补 = 0000 0000 0000 1110,整型数据,(+14)补 = 0000 0

9、000 0000 0000 0000 0000 0000 1110,符号位,例:十进制整数+14(对于32位的内存单元),整型数据,符号位,(+14)补 = 0000 0000 0000 1110,(-14)补 = 1111 1111 1111 0010,例:十进制整数-14(对于16位的内存单元),整型数据,(+14)补 = 0000 0000 0000 0000 0000 0000 0000 1110,符号位,(-14)补 = 1111 1111 1111 1111 1111 1111 1111 0010,例:十进制整数-14(对于32位的内存单元),整型数据,(+65537)补 = 01

10、 0000 0000 0000 0001,(-65537)补 = 10 1111 1111 1111 1111,符号位,真值为:-1,不是-65537!,例:十进制整数-65537(对于16位的内存单元),整型数据,(+65537)补 = 0000 0000 0000 0001 0000 0000 0000 0001,符号位,表示负,(-65537)补 = 1111 1111 1111 1110 1111 1111 1111 1111,真值为: -65537!,例:十进制整数-65537(对于32位的内存单元),为什么-65537这个数在16位内存单元中的表示与在32位内存单元中的表示不相同呢

11、?,这主要是因为-65537这个数超出了16位内存单元表示数的范围,所以实际存储的值(-1)与要表示的值(-65537)不同,但-65537并没有超出了32位内存单元表示数的范围,所以实际存储的值就是其本身。因此,我们在C语言中对数据处理时必须要注意数据的表示范围,以免引起不必要的错误。,整型数据,例 补码:11111001 取反:10000110 加1:10000111=-7,负数补码转换成十进制数:最高位不动,其余位取反加1,整型数据,考虑补码:1000000000000000、1111111111111111的十进制数,负数补码转换成十进制数:最高位不动,其余位取反,得到 十进制数减1,

12、整型数据,整型变量,定义:int 变量名, 变量名2,变量名n;,int必须小写,至少一个空格,必须为合法的标识符,以逗号,分隔,以分号;结尾,定义时可以赋初值,方法:在变量名后面增加“= 数值”,例: int a; int x, y, z; int m = 2, y = -3;,整型数据,整型变量的分类,控制变量是否有符号:signed(有符号)和unsigned(无符号) 控制整型变量的值域范围 :short(短)和long(长)。,在int前可以根据需要可加上修饰符,整型数据,符号位,变量a占用的内存单元(2字节),数据位,其值为:65534 !,整型数据,有符号短整型(short in

13、t或short),short int a = 2; /定义一个有符号短整型变量a,并赋初值2 或 short a = 2; 占用的内存单元为2个字节,无论是TC还是VC。,无符号短整型(unsigned short int或unsigned short),unsigned short int a = 2; /定义一个无符号短整型变量a,并赋初值2 或 unsigned short a = 2; 占用的内存单元字节数同short类型。,整型数据,有符号长整型(long int或long),long int a = 234567; /定义一个有符号长整型变量a,并赋初值234567 或 long

14、a = 234567; 占用的内存单元为4个字节,无论是TC还是VC。,无符号长整型(unsigned long int或unsigned long),unsigned long int a = 2; /定义一个无符号长整型变量a,并赋初值2 或 unsigned long a = 2; 占用的内存单元字节数同long类型。,整型数据,例 各种整型变量的定义,#include #define SUM 65535 void main ( ) int a, b = 20; unsigned int c = 0xff; long D; a = SUM; D = 301; printf(“a = %d

15、n“, a); printf(“b = %dn“, b); printf(“c = %dn“, c); printf(“D = %dn”, D); ,/文件包含,头文件说明,/定义符号常量SUM,值为65535,/定义两个int型变量a和b,b赋初值20,/定义无符号整型变量c,并赋初值0xff,/定义长整型变量D,/对a赋值为SUM,这时a的值是65535,/对D赋值为301,/以有符号十进制形式(“%d“)显示a的值,/以有符号十进制形式(“%d”)显示b的值,/以有符号十进制形式(“%d“)显示c的值,/以有符号十进制形式(“%d“)显示D的值,变量定义部分,语句执行部分,在TC3.0下

16、运行结果: a = -1 b = 20 c = 255 D = 301,在VC6.0下运行结果: a = 65535 b = 20 c = 255 D = 301,对于16位的有符号整型变量a来说,因65535在内存中的形式为1111111111111111,最高位为1表示负,则其所对应的十进制数就为-1。,整型数据,如果整型常量的值位于-3276832767之间,C语言认为它是int型常 量,它可以赋值给int型和long int 型变量; 如果整型常量的值位于-21474836482147483647之间,C语言认为它 是long型常量,它可以赋值给long int 型变量。 short

17、int与int型数据在内存中占据的长度相同,因此可以相互赋值。 整型常量后加字母l或L,认为它是long int 型常量。比如123L、45l、 0XAFL。 无符号数也可用后缀表示,整型常数的无符号数的后缀为U或u。例 如:358u, 0x38Au,235Lu 均为无符号数。,数据类型、运算符与表达式,学习内容,浮点型数据,浮点型常量,其中:a为十进制数,n为十进制整数,都不可缺少。其可表示为a10n,十进制小数形式:由数字09和小数点组成 。,如:0.123, 5.6, 12.4,指数形式:由十进制数,加阶码标志e或E以及阶码 (只能为整数,可以带符号)组成。,一般形式为:aen,如:12

18、3.456e2, 12.3456e3, 1.23456e4,规范化指数形式,合法的实数表示: 2.1E5 表示2.1105,3.7E-2 表示3.710-2。,非法的实数表示: 345(无小数点) ,E7(阶码标志E之前无数字) , -5(无阶码标志) ,50.-E3(负号位置不对),浮点型变量,单精度实型(float) float f , g; 这种定义的变量在内存中占4个字节(32位)的存储单元。 双精度实型(double) double x, y; 这种定义的变量在内存中占8个字节(64位)的存储单元。 长双精度实型(long double) long double x, y; 这种定义

19、的变量在内存中占16个字节(128位)的存储单元。,浮点型数据,浮点型数据,浮点型变量,注意: 三种实数类型中,其精度是 float double long double; long float实际上就是double,因此,没有long float类型;,浮点型数据,浮点型数据在内存中的表示方法,符号位,小数部分,指数,浮点型数据一般在内存中占4个字节(32位),按照指数形式存储。,浮点型数据,#include void main ( ) float a; /定义float型变量a double b, c; /定义double型变量b和c a = 123.45678; /对变量a赋值为123.

20、45678 b = a; /将变量a赋给变量b c = 123.45678; /对变量c赋值为123.45678 printf(“a = %f b = %lf c = %lfn“, a, b, c); ,运行结果: a = 123.45676 b = 123.45676 c = 123.45678,float型变量最多只能精确表示7个数字,因此显示a的值时,只能有效显示前面7个数字即123.4567,最后追加一位数字6是随机的 。,数据类型、运算符与表达式,学习内容,字符常量的值:该字符的ASCII码值,转义字符:反斜线后面跟一个字符或一个代码值表示,字符型数据,字符型常量,定义:用单引号括起

21、来的单个普通字符或转义字符.,如 a A ? n 101,如 A65, a97, 048 , n10,如 101 -A 012 -n 376 - x61 -a 060 -0 483 -(),字符型数据,例: 转义字符举例 #include void main ( ) printf (“101 x42 Cn“); printf (“I say:“How are you?“n“); printf (“C Programn“); printf (“Visual C“); printf (“ANbcnDEFn“); ,运行结果:(屏幕显示) A B C I say:”How are you?” C P

22、rogram Visual C ANbc DEF,注意:转义字符实际上作为字符来处理,但如果反斜线与 后面的字符不构成转义字符,则反斜线不起转义作 用将被忽略。,字符型数据,字符型数据类型符是char(字符character) 在内存中占1个字节(8位) 字符变量存放字符ASCII码 char与int数据间可进行算术运算 存在有符号和无符号之分。默认情况下为有符号,例: char ch; unsigned char C = B;,例: a = D; / a = 68; x = A + 5; / x = 65 + 5; s = ! + G / s = 33 + 71;,字符型变量,字符型数据,字

23、符串型常量,例: 字符串“HELLO”在内存中,例: 空串 “”,0,定义:用双引号(“”)括起来的字符序列 存储:每个字符串尾自动加一个 0 作为字符 串结束标志,字符型数据,字符常量与字符串常量不同,char ch; ch = “A”;,char ch; ch = A;,字符常量由单引号括起来,字符串常量由双引号括起来。 字符常量只能是单个字符,字符串常量可以是一个或多个字符。 可以把字符常量赋予字符变量,但不能把字符串常量赋予字符变量,c语言中没有字符串变量。 字符常量占1个字节的内存空间,字符串常量占的内存空间等于 字符串中的字节数加1。,简单数据类型的表示范围,数据类型、运算符与表达

24、式,学习内容,C语言的运算符与表达式,变量用来存放数据,运算符则用来处理数据。用运算符将变量和常量连接起来的符合C语法规则的式子被称为表达式。,运算符的分类: 单目运算符:只带一个操作数的运算符。如:+、-运算符。 双目运算符:带两个操作数的运算符。如:+、-运算符。 三目运算符:带三个操作数的运算符。如:?运算符。,学习运算符时应注意: 运算符的功能:该运算符主要用于做什么运算。 与运算量关系:要求运算量的个数及运算量的类型。 运算符的优先级:表达式中包含多个不同运算符时运算符运算的先 后次序。 运算符的结合性:同级别运算符的运算顺序(指左结合性还是右结 合性)。 运算结果的类型:表达式运算

25、后最终所得到的值的类型。,C语言的运算符与表达式,算术运算符与算术表达式,基本算术运算符: + - * / % 结合方向:从左向右 优先级: - -* / % - + - 说明: “-”可为单目运算符时,右结合性 两整数相除,结果为整数 %要求两侧均为整型数据,例: 5 / 2 = -5 / 2.0 =,例: 5 % 2 = -5 % 2 = 1 % 10 = 5 % 1 = 5.5 % 2,2,-2.5,1,-1,1,0,(),算术表达式: 表达式中的运算符都是算术运算符的表达式。,算术运算符与算术表达式,例: j = 3; k = +j; j = 3; k = j+; j = 3; pri

26、ntf (“%d”, +j); j = 3; printf(“%d”, j+); a = 3; b = 5; c = (+a) * b; a = 3; b = 5; c = (a+) * b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,自增、自减运算符+ -,作用:使变量值加1或减1,种类: 前置 +i, -i (先执行i=i+1或i=i-1,再使用i值) 后置 i+,i- (先使用i值,再执行i=i+1或i=i-1),算术运算符与算术表达式,自增、自减运算符注意事项: +和-运算符只能用于变量,不能用于常量和表达式。因为 +和-蕴含着赋值操作。

27、例如:5+、-(a+b)都是非法的表达式。 负号运算符、+、-和强制类型转换运算符的优先级相同, 当这些运算符连用时,按照从右向左的顺序计算,即具有右 结合性。 两个和之间不能有空格。 在表达式中,连续使同一变量进行自增或自减运算时,很容 易出错,所以最好避免这种用法。 例如:+i+是非法的。 自增、自减运算,常用于循环语句中,使循环控制变变量加 (或减)-,以及指针变量中,使指针指向下(或上)一个 地址。,算术运算符与算术表达式,例: int p, i = 2, j = 3; p = -i+; p = ? i = ? p = i+j; p = ? i = ? j = ? p = i+-j;

28、p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+i+; p = ? i = ? p = +i+(+i); p = ? i = ?,-2,3,5,3,3,4,2,2,4,3,2,4,4,8,4,数据类型、运算符与表达式,学习内容,简单的赋值运算符(“”,双目运算符,右结合),格式:变量 = 常量或变量或表达式,功能:将右边常量或变量或表达式的值赋给左边变量,例如: int x, y, z; x = 20; y = x; z = x + y;,赋值运算符与赋值表达式,复合赋值运算符(双目运算符,右结合),种类:+= -= *= /= %= =

29、 = &= = |=,含义: exp1 op= exp2 exp1 = exp1 op exp2,赋值表达式:,由赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。,格式:变量 (复合)赋值运算符 表达式,赋值运算符与赋值表达式,例如: a = 20 a = 4*5 b+=3,赋值语句:,例如: x = 8; a = b = c = 5;,赋值表达式在其后面加分号就构成了赋值语句。,赋值运算符及赋值表达式的使用,多个变量连续赋值,例如: a = b = c = 10;,a = (b = (c = 10);,结果:a、b、c 的值都为10,赋值表达式的嵌套,例如

30、: a=12; a+=a-=a*a,a=a+(a=a-(a*a),结果:a=-264,赋值运算符与赋值表达式,赋值运算符与赋值表达式,赋值语句“=”左边必须是变量名或对应某特定内存单元 的表达式不能是常量或其它表达式。 例如:30 = a; b + 2 = 5; 都是错误的。 赋值语句中的“=”表示赋值,不是代数中相等的意思。 要表示相等的意思则应用关系运算符“=”表示,二者 切勿混淆!,注意:,数据类型、运算符与表达式,学习内容,强制类型转换运算符,强制类型转换运算符,自动转换-运算转换:,例: char ch; int i; float f; double d;,ch/i + f*d -

31、(f+i),10+a +i*f - d/m,例: int i; float f; double d; long m;,强制类型转换运算符,(1) 短长度的数据类型 长长度的数据类型,方法:直接将无符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分,长长度的数据类型数据的高位部分补零。,无符号短长度的数据类型 无符号或有符号长长度的数据类型,例如: unsigned char ch = 0xfc; unsigned int a = 0xff00; /假设int数据为16位 int b; unsigned long u; b = ch; /b的值将是0x00fc u = a; /u的值将

32、是0x0000ff00,自动转换-赋值转换:,(1) 短长度的数据类型 长长度的数据类型,方法:直接将有符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分,然后将低位部分的最高位(即有符号短长度数据的符号位)向长长度的数据类型数据的高位部分扩展。,有符号短长度的数据类型 无符号或有符号长长度的数据类型,强制类型转换运算符,例如: char ch = 2; int a = -2; int b; unsigned long u; b = ch; /b的值将是2 u = a; /u的值将是0xfffffffe,自动转换-赋值转换:,(2) 长长度的数据类型 短长度的数据类型,方法:直接截取

33、长长度的数据类型数据的低位部分(长度为短长度的数据类型的长度)作为短长度数据类型的数据。,例如: int a = -32768; /假设int数据为16位 unsigned long b = 0xffffaa00; char ch; int c; ch = a; /ch的值将是0 c = b; /c的值将是0xaa00,强制类型转换运算符,自动转换-赋值转换:,(3) 长度相同的数据类型转换,方法:数据按照原样复制即可。,例如: int a = 0xff00; unsigned int b = a; /b的值将是0xff00,强制类型转换运算符,自动转换-赋值转换:,强制转换-强制类型转换运算

34、符:,强制类型转换运算符,一般形式:(类型说明符) (表达式),功能:把表达式的运算结果强制转换成类型说明符所表示的类型。其 中,(类型说明符)是强制类型转换符,它的优先级比较高。,例: float x = 3.5, y = 2.1, z; int a; a = (int)(x+y); /结果为5 z = (int)x+y; /结果为5.100000 z = (double)(3/2); /结果为1.000000 a = (int)3.6; /结果为3,精度损失问题,强制类型转换运算符,在使用强制转换时应注意以下问题: 类型说明符和表达式都必须加括号。 例如:把(int)(x+y)写成(int

35、)x+y则成了把x转换成int型之后再与 y相加了。 无论是强制转换或是自动转换,都只是为了本次运算的需要 而对变量的数据长度进行的临时性转换,而不改变数据说明 时对该变量定义的类型。 例如:(double)a 只是将变量a的值转换成一个double型的中间 量,其数据类型并未转换成double型。,数据类型、运算符与表达式,学习内容,逗号运算符:, 逗号表达式:用逗号连接起来的表达式。,一般形式:表达式1,表达式2,表达式k,优先级:优先级最低。 结合性:左结合性 。即逗号表达式的求值顺序是从左向右依 此计算用逗号分隔的各表达式的值。 逗号表达式的值:最后一个表达式的值就是整个逗号表达式的值

36、。 用途:常用于循环for语句中。,例如:a+3, b=4, b+,逗号运算符与逗号表达式,例: 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);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,例:

37、#include void main ( ) int x, y = 7; float z = 4; x = (y = y + 6, y / z); printf (“x = %dn“, x); ,运行结果:x = 3,逗号运算符与逗号表达式,其它运算符与表达式,关系运算符与关系表达式,逻辑运算符与逻辑表达式,位运算符与位运算表达式,条件运算符与条件表达式,关系运算符与关系表达式,关系运算符(自左向右),关系表达式的值:是逻辑值“真”或“假”,用1和0表示,例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,

38、/f=0,关系运算注意:,关系运算符与关系表达式,例 5278在C中是允许的, 值为,0,例 a0 结果为 A100 结果为,1,0,例 注意区分“=”与“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);,例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为 可改写为:fabs(1.0/3.0*3.0-1.0)1e-6,0,逻辑运算符与逻辑表达式,逻辑运算真值表,例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|84-!0 c&d,

39、值为1,值为0,值为1,值为1,值为1,值为1,/(53)&2|(8(4-(!0) 值为1,逻辑运算符与逻辑表达式,位运算符与位运算表达式,种类:按位与(&)、按位或(|)、按位取反()、 按位异或()、左移()。,位运算符:,“与”运算:又称为逻辑乘,C语言中用“&”来表示。如有A、B两个逻 辑变量,可能有的取值情况只有4种。,结论:即只有A、B两个变量取值均为1,则它们“与”运算的结果才为1,其它均为0。,位运算符与位运算表达式,“或”运算又称为逻辑加,C语言中用“|”来表示。如有A、B两个逻辑变 量,可能有的取值情况只有4种。,结论:即A、B变量中只要一个变量取值为1,则它们“或”运算的

40、结果就是1。,位运算符与位运算表达式,“非”运算又称为逻辑反,C语言中用“”来表示。,结论:即将A的值求反。,位运算符与位运算表达式,“异或”运算C语言中用“”来表示。如有A、B两个逻辑变量,可能有的 取值情况只有4种。,结论:即当两个变量的取值相异时,则它们“异或”运算的结果就是1,相同则结果为0。,位运算符与位运算表达式,左移():实现将某变量所对应的二进制数往左移位,溢出 的最高位被丢掉,空出的低位用零填补。,返回整型值的表达式 返回整型值的表达式,例: int a = 3; a 2:将a所对应的二进制数左移两位,该表达式的值为12。 2 a:将2所对应的二进制数左移三位(a的值), 该

41、表达式的值为16。,右移():右移运算实现将某变量所对应的二进制数往右移位, 溢出的最低位被丢掉,如果变量是无符号数,空出的高 位用零填补,如果变量是有符号数,空出的高位用原来 的符号位填补(即负数填1,正数填0)。,返回整型值的表达式 返回整型值的表达式,位运算符与位运算表达式,例: 将short类型数据的高、低位字节互换 #include void main ( ) short a = 0xf245 , b, c; b = a 8 ; /将a的高8位移到低8位赋值给c,c的值为0xfff2 c = c ,a = 0x45f2,条件运算符与表达式,功能:相当于条件语句,但不能取代一般if语句

42、,一般形式: expr1 ? expr2 : expr3,例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);,运算符的优先级和结合性,判断表达式0XF0F0 & 0X1010 + 0X0A0A 5/2的值 ? 0XF0F0 & 0X1010 + 0X0A0A 5/2,2,0X1A1A,0X6868,0XF0F0 &,0X6060,/的优先级最高,+的优先级比&、高,的优先级比&高,本章小结,本章所介绍的主要内容是整型数据、实型数据和字符型数据的常量表示法和变量定义格式,以及可以作用于这些数据类型的运算符。虽然本章的内容比较烦杂,学起来也许比较枯燥,但本章的内容是学好C语言的基础,是每个C语言程序员必须熟练掌握的。现在我们一起来回忆一下本章有哪些内容值得我们特别留意和必须深刻领会的呢? 变量的含义 数据在内存中的表示形式 不同类型的数据在内存中的表示范围 转义字符 有符号数与无符号数的区别 数据类型的自动转换与强制类型转换 各种运算符、运算符的优先级和结合性,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1