- 1、本文档共131页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章数据类型运算符表达式2定稿
#include stdio.h void main( ) { int a = 3, b = 4, c = 5, d = 0, x = 0, y = 0; d = a + b c b == c; printf(“d = %d\n”, d); d = a ++ | | c ++ ; printf(“d = %d\n”, d); d = ! (x = a) (y = b); printf(“d = %d\n”, d); printf(“a = %d, c = %d\n”, a, c); printf(“x = %d, y = %d\n”, x, y); return ; } 逻辑表达式:例 4 → x ! (4) (y = b) 0 (y = b) → 0 y = b 没有被求解,就是说y 的值没有变 #include stdio.h void main( ) { int a = 3, b = 4, c = 5, d = 0, x = 0, y = 0; d = a + b c b == c; printf(“d = %d\n”, d); d = a ++ | | c ++; printf(“d = %d\n”, d); d = ! (x = a) (y = b); printf(“d = %d\n”, d); printf(“a = %d, c = %d\n”, a, c); printf(“x = %d, y = %d\n”, x, y); return ; } 逻辑表达式:例 运行结果: d=0d=1d=0a=4, c=5x=4, y=0 = 运算符与== 运算符的区别 = 是“赋值运算符”。赋值表达式中,赋值 运算符的左边只能是变量。 注意:不要混淆或误用 = 与 == 运算符。 == 是“等于关系运算符”。关系表达式中,等于运算符的两边可以是常量、变量或任何合法的表达式。 =运算符与==运算符的区别 假设a = 1,则: (a = 1)==(b = 2) 这个赋值表达式的数值是2,但逻辑值是 1 是正确的关系表达式 (a = 1) = (b = 2) 是错误的赋值表达式 a = 2 这个关系表达式的逻辑值是 0 a == 2 课堂练习 ◆ 1. 如果表达式 E 的值为1,则以下表达 式中,( )的值是0. (A) ! E == 0 (B) E 0 || E 0 (C) E == 0 (D) E != 0 答案: (C) 课堂练习 ◆ 2. 设a=10,b=15,c=0,d=2,则下 列表达式的值是 a * b c a == b c ! c || d / b a == c d = c b || a 答案: 0 答案: 0 答案: 1 答案: 1 2.4.5 位运算符和位运算 计算机内部,数据的存储、运算都是以二进制补码形式进行的,1个字节-8个二进制位。 位运算就是针对二进制位的运算。 位运算的操作对象只能是整型或字符型数据。 位运算是C语言的低级语言特性,广泛应用于对底层硬件,外围设备的状态检测和控制。 概述 C语言有6种位运算符: 位运算符 Bitwise Operators 按位右移 按位左移 按位异或 ^ 按位取反 ~ 按位或 | 按位与 含义 运算符 1.除按位取反外,其它运算符都是双目运算符 2.按位取反与逻辑非!、取地址等单目运算符同级,比双目运算符高 3.、比关系运算符优先级别高 4.、 ^ 、 |优先级别从高到低,处在关系运算符和逻辑运算符之间 左移运算符 左移运算符“”功能:将一个数的各个二进制位全部向左移动若干位(左边移出的部分忽略,右边补0)。 每左移1位,相当于乘2,左移n位相当于乘2n。 例如: unsigned char a = 26; /* (26)10=(0001,1010)2=(1A)16 */ a = a 2; /* (0110,1000)2=(68)16=(104)10 */ 右移运算符 右移运算符“”功能:将一个数的各个二进制位全部向右移动若干位(右边移出的部分忽略,右边对无符号数补0,有符号数补符号位)。 每右移1位,相当于除2,左移n位相当于除2n。 例如: unsigned char a = 0x9A; /* (9A)16=(154)10=(1001,1010)2 */ a = a 2; /* (0010,0110)2=(26)16=(38)10 */ 按位取反运算符 按位取反“~
文档评论(0)