1、数据类型、运算符与表达式共 56 页 第 2 2 页共 56 页 第 3 3 页2.12.1 2.22.2 2.32.32.42.42.52.52.62.6基本符号基本符号 数据类型数据类型运算符和表达式运算符和表达式数据类型转换数据类型转换自增运算和自减运算自增运算和自减运算位运算位运算共 56 页 第 4 4 页程序设计语言的基本规则包括程序设计语言的基本规则包括l 常数常数l 变量变量l 运算符运算符l 表达式表达式l 函数函数xaxfsin536 . 3)(什么是语言规则?什么是语言规则?为什么要有这些规则?为什么要有这些规则? 表达式表达式常数变量变量函数函数运算符运算符共 56 页
2、 第 5 5 页1. C1. C语言语言的基本字符集的基本字符集l 数数 字字:0 1 2 3 4 5 6 7 8 9l 字字 母母:a b c z A B C Zl 运运 算算 符符:+ - * / % = = != = & | & | ( ) - . ! ? : , ; “ l 特殊符号:特殊符号:_(下划线下划线) 回车回车(r) 换行换行(n) 制表符制表符(t) 基本字符集基本字符集共 56 页 第 6 6 页2. C语言语言的标识符的标识符 基本标识符:变量名、函数名、文件名、基本标识符:变量名、函数名、文件名、 数数 组名、类型名组名、类型名 规则:字母或下划线开头,后面是字母、
3、规则:字母或下划线开头,后面是字母、 下划线或数字下划线或数字call_n test39 _string1 abccall.n 39test -string1 c2.0 共 56 页 第 7 7 页auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeofstatic structswitch typedef union unsigned voidvolatile while3. C语言语言的关键
4、字的关键字共 56 页 第 8 8 页4. 常量常量在程序运行中,其值保持不变的量称为常量在程序运行中,其值保持不变的量称为常量。常量的表示方法常量的表示方法: 数值常量数值常量 例如:例如:10,3 , 2.68等等 符号常量符号常量 用一个符号代表一个常量用一个符号代表一个常量 必须必须先定义先定义后使用后使用,习惯用习惯用大写大写字母表示。字母表示。例如例如: #define PI 3.1415926 main( ) float r,l,s; r=2; l=2*PI*r;s=PI*r*r; printf(“l=%d, s=%d”, l,s); 共 56 页 第 9 9 页5.5.变量变量
5、在程序执行期间其值可以改变的量。在程序执行期间其值可以改变的量。l有关变量的规定有关变量的规定u 变量通过变量名标识,变量通过变量名标识,变量名和内存中变量名和内存中的存储单元相对应。编写程序时通过变量的存储单元相对应。编写程序时通过变量名来存、取存储单元。名来存、取存储单元。u 变量必须先定义,后使用。变量必须先定义,后使用。变量变量memorya88 81000H1000H1001H1001H1002H1002H2562561212共 56 页 第 1010 页命名规则命名规则: 变量名由标识符表示,只能由变量名由标识符表示,只能由字母字母、数字数字和和下划线下划线三种字符组成,且第一个字
6、符必三种字符组成,且第一个字符必须须为为字母字母或或下划线下划线。 例如:例如:下列标识符中,不合法的变量名有:下列标识符中,不合法的变量名有: M.D.John 12%gf 1add _ce36 age& 5thclass lotus-1-2-3 cd*ef 说明:说明: *变量要变量要“先定义,后使用先定义,后使用” 定义格式定义格式:类型说明符类型说明符 标识符标识符1, 1, , ,标识符标识符n n 例如:例如:int x, y, z; float a, b, c, d; *选变量名时,要做到选变量名时,要做到“见名知意见名知意” 例如:例如:name , st_age , xm ,
7、 nl , class , sum共 56 页 第 1111 页 许多程序设计语言都把它们能处理的数据分成许多程序设计语言都把它们能处理的数据分成若干类,这些类就是数据类型。若干类,这些类就是数据类型。 为什么要划分数据类型?为什么要划分数据类型? 不同类型的数据在计算机内表示不同;不同类型的数据在计算机内表示不同; 不同类型的数据能执行的运算不同;不同类型的数据能执行的运算不同; 计算机能处理的问题中的数据是广义的。计算机能处理的问题中的数据是广义的。共 56 页 第 1212 页 C语言数据类型语言数据类型: 整型整型 字符型字符型 单精度型单精度型 算术类型算术类型 实型(浮点型)实型(
8、浮点型) 基本类型基本类型 枚举类型枚举类型 双精度型双精度型 指针类型指针类型数据类型数据类型 数组数组 构造类型构造类型 结构体类型结构体类型 共用体类型共用体类型规定:在程序中用到的数据,必须指定数据类型。共 56 页 第 1313 页 整型常量的不同数值表示方法整型常量的不同数值表示方法十进制数:十进制数:0 09 9八进制数:八进制数:0 07 7,以,以0 0开头开头十六进制数:十六进制数:0 09 9,A AF/aF/af f,以,以0 0 x x或或0X0X开头开头 1.1.整型常量整型常量 整型常量的类型整型常量的类型w根据值大小默认类型根据值大小默认类型例:例: 32767
9、32767的类型是的类型是intint,3276932769类型是类型是long long 。w在常量后面加在常量后面加l l或或L L,表示,表示long long intint型型 例:例:123L123L,0L0L,432l 432l 都是都是long intlong int型常量型常量共 56 页 第 1414 页l整型变量的整型变量的形式形式共六种共六种基本整型基本整型短整型短整型长整型长整型无符号整型无符号整型无符号短整型无符号短整型无符号长整型无符号长整型intint short intshort int long intlong intunsigned intunsigned
10、intunsigned short unsigned short unsigned longunsigned long占内存字节数占内存字节数2 22 24 42 22 24 42.2.整型变量整型变量 VC+VC+规定:规定:shortshort型占型占2 2个字节,个字节,intint和和longlong都占都占4 4个字节。个字节。共 56 页 第 1515 页l整型变量的定义整型变量的定义 unsigned int x,y变量有值吗?变量有值吗?共 56 页 第 1616 页 类型类型 类型说明符类型说明符 长度长度 数的范围数的范围基本型基本型 intint 2 2字节字节 -327
11、68-327683276732767短整型短整型 short short 2 2字节字节 -2-215152 21515-1 -1 长整型长整型 long 4long 4字节字节 -2-231312 23131-1-1无符号整型无符号整型 unsigned 2unsigned 2字节字节 0 06553565535无符号短整型无符号短整型 unsigned short 2unsigned short 2字节字节 0 06553565535无符号长整型无符号长整型 unsigned long 4unsigned long 4字节字节 0 0(2 23232-1-1)j j、m m、x x 所占存
12、储容存储容量和取值范围?量和取值范围? 共 56 页 第 1717 页最大的负数?最大的负数?最大的正数?最大的正数?共 56 页 第 1818 页例例:main() int a,b; a=32767; b=3; c=a+b; printf(c=%dn,c); 程序运行结果程序运行结果:c=-32766C-32766的补码形式的补码形式共 56 页 第 1919 页1.1.实型变量实型变量实型变量分实型变量分类:单精度、双精度和长双精度型。类:单精度、双精度和长双精度型。 2.2.2 2.2.2 实型数据实型数据实型变量的有关规则:实型变量的有关规则:类型名称类型名称长长long 16字节字节
13、18-19共 56 页 第 2020 页什么是数的范围?什么是有效位?什么是数的范围?什么是有效位?例如例如 十进制实型数据十进制实型数据0.123456 10-2在计算机中的存在计算机中的存放形式为:放形式为: + 0.123456 数符数符指数符号指数符号 指数指数 - 2小数小数小数部分小数部分指数部分指数部分共 56 页 第 2121 页 其中,小数部分一般都采用规格化的数据形式,其中,小数部分一般都采用规格化的数据形式,即:小数点放在第一个有效数字前面,使小数部分即:小数点放在第一个有效数字前面,使小数部分放小于放小于1的纯小数。的纯小数。l 单精度实数单精度实数的精度取决于小数部分
14、的的精度取决于小数部分的2323位二进制数位所能表达的数值位数,将其位二进制数位所能表达的数值位数,将其转换为十进制,最多可表示转换为十进制,最多可表示7 7位十进制数字位十进制数字,所以单精度实数的有效位是,所以单精度实数的有效位是7 7位。位。l 双精度型双精度型用于扩大存储位数,目的是增用于扩大存储位数,目的是增加实数的长度,减少累积误差,改善计算加实数的长度,减少累积误差,改善计算精度。精度。共 56 页 第 2222 页2. 实型常量实型常量l 两种表示形式:两种表示形式:十进制数形式:十进制数形式:由数字和小数点及正负号组成。由数字和小数点及正负号组成。 (注意:必须有小数点注意:
15、必须有小数点) 例如:例如:23.678 .678 23.23.678 .678 23.指数形式:指数形式:由数字、小数点、字母由数字、小数点、字母e或或E及正负号组成。及正负号组成。(注:注:e或或E之前必须有数字,且后指数必须为整数之前必须有数字,且后指数必须为整数) 例如:例如:3.5E-5 2e3 3.5E-5 2e3 E2 3.6e3.5 .e6 e E2 3.6e3.5 .e6 e 不合法!3.5乘以10的-5次方,即0.0000352乘以10的3次方,即2000共 56 页 第 2323 页l 实型常量的类型实型常量的类型 C C语言中语言中, ,实型常量一般作为双精度来处理。实
16、型常量一般作为双精度来处理。 一个实型常量不分一个实型常量不分floatfloat和和doubledouble型,可以赋给型,可以赋给一个一个floatfloat型或型或 doubledouble型变量,并根据变量的型变量,并根据变量的类型截取实型常量中相应的有效位数字。类型截取实型常量中相应的有效位数字。例如:例如: main()main() float a; float a; double b; double b; a=1234.111111; a=1234.111111; b=1234.111111; b=1234.111111; printf(“a=%f,b=%f”,a,b print
17、f(“a=%f,b=%f”,a,b);); 运行结果?a=1234.111084,b=1234.111111a=1234.111084,b=1234.111111共 56 页 第 2424 页超出表示范围的数机器如何处理?超出表示范围的数机器如何处理?共 56 页 第 2525 页1. 字符常量字符常量 用单引号括起来的一个字符(用单引号括起来的一个字符( 只能包含一个字符)只能包含一个字符) 例如:例如: a A $ ! abc、“a” 注注: a与与A是是 不同的字符常量。不同的字符常量。共 56 页 第 2626 页转义字符:转义字符:l 转义字符的概念:转义字符的概念:是一种特殊的字符
18、常是一种特殊的字符常量,用于表示常用的但却难以用一般形式量,用于表示常用的但却难以用一般形式表示的不可显示字符。表示的不可显示字符。l 转义字符的表示转义字符的表示: : 用一个转义标识符用一个转义标识符“”开头,后面是需要的转义字符。常开头,后面是需要的转义字符。常用的转义字符序列的字符常量见表:用的转义字符序列的字符常量见表:转义字符是特殊形式的字符常量转义字符是特殊形式的字符常量共 56 页 第 2727 页转义字符表:转义字符表:转义字符转义字符 功功 能能 n 换行换行 v 垂直制表垂直制表 b 退格退格 r 回车回车 f 走纸换页走纸换页 t 跳到下一个制表位跳到下一个制表位 反斜
19、线字符反斜线字符 单引号字符单引号字符 “ 双引号字符双引号字符 ddd 至位八进制数表示的字符至位八进制数表示的字符 xdd 至位十六进制数表示的字符至位十六进制数表示的字符转义符“”表示将其后的字符原来的含义进行转换,变成某种另外特殊约定的含义。共 56 页 第 2828 页例:例:main() printf(“ctlanguagsberCn”); printf(“istusef165x6c”);屏幕输出:屏幕输出:C languageis useful共 56 页 第 2929 页l定义形式定义形式: charl占存储空间占存储空间 :一个变量一个字节一个变量一个字节2. 字符变量字符变
20、量一个字符变量只一个字符变量只能包含一个字符能包含一个字符main()main()char c ;char c ; c = c; c = c; printf printf ( “%c”, c ); ( “%c”, c ); 运行结果:运行结果:C C题目中有几个题目中有几个c c,哪些是等价的?哪些是等价的?例:例:共 56 页 第 3030 页aa的的ASCIIASCII值为值为97 97 内存中存储形式内存中存储形式0 1 1 0 0 0 0 1例:例: aa、AA、110 1 1 0 0 0 0 1整型数整型数97 97 内存中存储形式内存中存储形式0 0 0 0 0 0 0 0共 56
21、 页 第 3131 页main() char a; int b; a=A; b=a+25; printf(“%c,%d,%c,%dn”,a,a,b,b); 例:例: 计算字符计算字符A与整型数据与整型数据25的和。的和。程序运行结果:程序运行结果:A,65,Z,90共 56 页 第 3232 页3.3.字符串常量字符串常量n n个字符组成的字符串常量个字符组成的字符串常量, , 占内容空间为占内容空间为 n+1 n+1 个字节。个字节。c ch hi in na a00字符串结束标记字符串结束标记“空空”字符字符例:例:a a 串长串长 1 1 This is C stringThis is
22、C string 串长串长1616 (空格)空格) 串长串长1 1 “” “” (不含空格)不含空格) 串长串长0 0共 56 页 第 3333 页在程序中,可以用字符常量或字符串常量表示单个在程序中,可以用字符常量或字符串常量表示单个字符,例如字符,例如 aa,或,或“a”a”,两者的区别如下:,两者的区别如下:(1 1) 字符串字符串aa在内存中占在内存中占2 2个字节,而字符个字节,而字符a a 在内存中占在内存中占1 1个字节。个字节。 字符串字符串a a 字符字符aa(2 2) 不能将字符串赋给一个字符变量。不能将字符串赋给一个字符变量。例:例: char ch1,ch2;char
23、ch1,ch2; ch1=a; /ch1=a; /* *正确正确* */ / ch2=a; / ch2=a; /* *错误错误* */ /a0a共 56 页 第 3434 页练习:练习:1.1.以下不合法的变量名为:以下不合法的变量名为: D D (A) _123 (B) IF (C) e4 (D)float (A) _123 (B) IF (C) e4 (D)float2.2.指出指出下列字符串的长度下列字符串的长度及输出内容及输出内容: “ “ 054 ” 054 ” “x56”cta ” “x56”cta ” “ntbab “ntbab” ” 3 输出输出 ,6输出输出V”c a6 输出
24、输出 ab十进制为86对应”V”“w110good”w110good”占几个字节占几个字节? ?3 3字节字节 输出输出 w w 字符串结束标记字符串结束标记共 56 页 第 3535 页在定义变量时为其指定值在定义变量时为其指定值方法方法:intint a=5; a=5;intint a,b,c=5; a,b,c=5;intint a5,b=5,c=5; a5,b=5,c=5;intint a=b=c=5; a=b=c=5;1. 定义变量的同时定义变量的同时为其初始化为其初始化2. 初始化不是在编初始化不是在编译时进行译时进行,而是在而是在程序运行时完成的程序运行时完成的2.2.4 2.2.
25、4 变量的初始化变量的初始化初始化初始化共 56 页 第 3636 页运算符运算符: : 描述各种操作的符号。描述各种操作的符号。2.3.12.3.1算术运算符和算术表达式算术运算符和算术表达式1.1.算术运算符算术运算符 2.2.算术表达式:算术表达式:由算术运算符、常数、变量、函数和圆括号组成由算术运算符、常数、变量、函数和圆括号组成 例如:例如: a + b + a*b/c +2.83. 优先级:优先级:高于高于4. 结合性:结合性:“左结合性左结合性”或称为或称为“自左至右的结合方向自左至右的结合方向”即运算即运算对象先与左边的运算符结合。对象先与左边的运算符结合。 例如:例如:a -
26、 b + c注意注意: / 是除法运算符。当两个整数相除时为整除。是除法运算符。当两个整数相除时为整除。 9/2=4; -9/2=-4; %是取余数运算符是取余数运算符,只能作用于两个整数。运算结果的符号只能作用于两个整数。运算结果的符号与被除数的符号一致。与被除数的符号一致。 9%2=1 ; -9%2=-1 ; 9%-2=1; 共 56 页 第 3737 页符号符号说明说明优先级优先级结合性结合性算术表达式算术表达式+-单目取正单目取正单目取负单目取负1414从右到左从右到左a=+8b=-a*/%乘乘除除取余取余131313从左到右从左到右a=12*5.5b=14/6.5c=12%5+-加加
27、减减1212从左到右从左到右a=15+8.5b=18-8.5基本算术运算符基本算术运算符共 56 页 第 3838 页(1) (1) 优先级优先级 当若干个运算符同时出现在表达式中时,优先级规定了当若干个运算符同时出现在表达式中时,优先级规定了运算的先后次序。优先级有运算的先后次序。优先级有1515级。级。 C C语言把圆括号作为运算符,规定它的优先级最高,规语言把圆括号作为运算符,规定它的优先级最高,规定为定为1515级,从而保证优先运算圆括号内的式子,逗号运算符级,从而保证优先运算圆括号内的式子,逗号运算符的级别最低,规定为的级别最低,规定为1 1级。级。(2) (2) 结合性结合性 当若
28、干个具有相同优先级的运算符相邻出现在表达式中当若干个具有相同优先级的运算符相邻出现在表达式中时,结合性规定了运算的先后次序。分为时,结合性规定了运算的先后次序。分为“从左到右从左到右”和和“从右到左从右到左”两个结合方向。两个结合方向。 大多数运算符的结合方向大多数运算符的结合方向”从左到右从左到右”; 单目运算符、赋值运算符和条件运算符的结合方向单目运算符、赋值运算符和条件运算符的结合方向”从右从右到左到左”(单目运算符是指作用于一个操作对象的运算符(单目运算符是指作用于一个操作对象的运算符) )。共 56 页 第 3939 页2.3.2 赋值运算符和赋值表达式赋值运算符和赋值表达式1.1.
29、一般赋值运算符:一般赋值运算符:= =赋值表达式:由赋值运算符将一个变量和一个表达式赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子。连接起来的式子。形式:变量名形式:变量名= =常量或表达式常量或表达式作用:将右边常量或表达式的值赋给左边的变量。作用:将右边常量或表达式的值赋给左边的变量。例:例:a=3; b=a=3; b=c+dc+d ; ; 说明:说明: 赋值后,原来左边的值被右边表达式的值替换;赋值后,原来左边的值被右边表达式的值替换; 如果右边表达式的值的类型与左边变量的类型不一如果右边表达式的值的类型与左边变量的类型不一 致,以左致,以左边变量的类型为准,将表达式值的类
30、型转换为左边变边变量的类型为准,将表达式值的类型转换为左边变 量的类量的类型。型。 结合方向结合方向“从右向左从右向左”。 例:例: x=y=a+b;共 56 页 第 4040 页例:main() int a; double b=3.5; a=b+2.1; printf(“a=%d”,a); 共 56 页 第 4141 页2. 复合赋值运算符复合赋值运算符 复合赋值运算符:在赋值符复合赋值运算符:在赋值符“=”之前加上其它运算之前加上其它运算符符 共有共有10种复合赋值运算符种复合赋值运算符: += ,=, , &, =, |= 例:例:int a=1, b=2, c=2; double x=
31、1.5,y=2,z=2; c*=a-b; c的值?的值? 2*(1-2)=-2 int型型 z-=x+y; z的值?的值? 2.0-(1.5+2.0)=-1.5 double型型共 56 页 第 4242 页1.1.逗号运算符:即逗号运算符:即“,” 优先级:为所有运算符中级别优先级:为所有运算符中级别最低最低的(的(1515)。)。2.2.逗号表达式逗号表达式 形式:形式:表达式表达式1 1,表达式,表达式2 2,表达式,表达式n n 求解过程:顺次求解表达式求解过程:顺次求解表达式1 1,表达式,表达式22 最后求解表达式最后求解表达式n n。 逗号表达式的值为表达式逗号表达式的值为表达式
32、n n的值。的值。 结合性结合性: :左结合左结合例如:例如:a=3a=3* *5,a5,a* *4 4 a=3 a=3* *5,a5,a* *4,a+54,a+5 x=(a=4%3 , a+1, ax=(a=4%3 , a+1, a* *10)10)602010共 56 页 第 4343 页转换规则:转换规则: int unsigned int long int unsigned long int double short , char float(1) float 型数据一律转换成型数据一律转换成double 型数据。型数据。(2) char 和和short int 型数据一律转换成型数据
33、一律转换成 int 型数据型数据 以上两条转换原则说明:即使两个操作数类型相同,但只以上两条转换原则说明:即使两个操作数类型相同,但只要它们同属要它们同属 char , short int 或或 float 类型,则转换一定发生。类型,则转换一定发生。 整型、实型和字符型可以混合运算;一般类型数据先转换为标整型、实型和字符型可以混合运算;一般类型数据先转换为标准型;不同类型的要先转换为相同类型。准型;不同类型的要先转换为相同类型。形式:系统自动进行和形式:系统自动进行和 强制类型转换两种。强制类型转换两种。竖直方向的转换表示那些一定竖直方向的转换表示那些一定要发生的转换;横向表示操作要发生的转
34、换;横向表示操作数的类型转换的方向。数的类型转换的方向。共 56 页 第 4444 页例:若有:例:若有:intint i; float f; i; float f; double d ; long e ;double d ; long e ; 试判断表达式试判断表达式 3 +b 3 +b +i+i* *f - d/e f - d/e 的类型的类型double型优先级低的向优先级高的转换优先级低的向优先级高的转换规则规则:共 56 页 第 4545 页2.4.2 强制类型转换强制类型转换 将指定表达式的值转换为指定类型将指定表达式的值转换为指定类型. . 形式:(类型名)(表达式)形式:(类型
35、名)(表达式)例如:例如:( double) (a+b)( double) (a+b) 说明:说明: () 表达式应用括号括起表达式应用括号括起例如:例如: (int)(x+y) ; (int)x+y;() 在强制类型转换时,得到一个所需类型的中间变在强制类型转换时,得到一个所需类型的中间变量,原来变量类型未发生变化。量,原来变量类型未发生变化。例如:例如:float x=8.6 ; int y; y=(int)x ;共 56 页 第 4646 页作用:作用:使变量的值增或减,如:使变量的值增或减,如:i , i (使用之(使用之前前,先使,先使i的值加(减)的值加(减)1)i, i (使用之
36、(使用之后后,使,使i的值加(减)的值加(减)1) +i 先执行先执行i=i+1,再使用,再使用i的值的值 i+ 先使用先使用i的值,再执行的值,再执行i=i+1例如:例如:int a=1 , b; b=+a ; b=a+ ;说明:说明:(1 1)+、- - -为单目运算符为单目运算符(2 2)+ + 、只能用于变量,而不能用于常量或表达式。、只能用于变量,而不能用于常量或表达式。 例如:例如:10+10+,(,(x+y)+x+y)+,+a, b+ ,+a, b+ 中合法的为:中合法的为:(3 3)自增、自减运算符为)自增、自减运算符为右结合性右结合性(即自右至左)。(即自右至左)。 例如:例
37、如:a+ a+ (a+a+) 共 56 页 第 4747 页i=2;k=i+ + i+ + i+;i=2;k= +i + ( +i) + (+i);自增之后再相加执行完分执行完分号再自增号再自增i=?k=?i=?k=?算一算?共 56 页 第 4848 页2.6 2.6 位运算位运算 位运算是针对二进制数的运算,通常只适用于整位运算是针对二进制数的运算,通常只适用于整数数据。数数据。 C C语言中提供的位运算符有:语言中提供的位运算符有: 、 、 & & 、 、1.1.按位取反运算符按位取反运算符形式:形式: A A功能:把功能:把A A的各位都取反,(即的各位都取反,(即0 0变变1 1,1
38、 1变变0 0)例如:例如:intint A=179 A=179A0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1A 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0共 56 页 第 4949 页2. 按位与运算符按位与运算符 &形式:形式:A&B功能:对功能:对A的各位与的各位与B的对应位进行比较,如果两者都为的对应位进行比较,如果两者都为1, A&B对应位上的值为对应位上的值为1,否则为,否则为0。例如:例如:intint A=179 A=179(二进制(二进制1011001110110011) intint B=169 B=169(二进制(二进制1010100
39、1)10101001)A10110011B10101001A&B10100001共 56 页 第 5050 页3. 按位或运算符按位或运算符|形式:形式:A | B功能:对功能:对A的各位与的各位与B的对应位进行比较,如果两者中有一个的对应位进行比较,如果两者中有一个 为为1,A|B对应位上的值为对应位上的值为1,否则为,否则为0。例如:例如:intint A=179 A=179(二进制(二进制1011001110110011) intint B=169 B=169(二进制(二进制10101001)10101001)A10110011B10101001A|B10111011共 56 页 第 5
40、151 页4. 按位异或运算符按位异或运算符 形式:形式:AB功能:对功能:对A的各位与的各位与B的对应位进行比较,如果两者不同,的对应位进行比较,如果两者不同, AB对应位上的值为对应位上的值为1,否则为,否则为0。例如:例如:intint A=179 A=179(二进制(二进制1011001110110011) intint B=169 B=169(二进制(二进制10101001)10101001)A10110011B10101001AB00011010共 56 页 第 5252 页5. 左移运算符左移运算符 形式:形式:An ( 其中其中 n为一个大于为一个大于0的整型表达式)的整型表达
41、式)功能:把功能:把A的值向左移动的值向左移动n位,右边空出的位,右边空出的n位用位用0填补。填补。 当左移时移走的高位中全都是当左移时移走的高位中全都是0时,相当于对时,相当于对A作作n 次乘次乘 以以2的运算。的运算。例如:例如:intint A=27 A=27(二进制(二进制0001101100011011)A00011011A形式:形式:An ( 其中其中 n为一个大于为一个大于0的整型表达式)的整型表达式)功能:把功能:把A的值向右移动的值向右移动n位,左边空出的位,左边空出的n位用位用0填补。填补。 相当于对相当于对A作作n 次除以次除以2的运算。的运算。例如:例如:intint A=179 A=179(二进制(二进制1011001110110011)A10110011A300010110