C语言逻辑运算符分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.印象中的逻辑运算符
2.有趣的问题
例程: #include <stdio.h> int main(void) {
int i = 0; int j = 0; int k = 0;
++i || ++j && ++k;
printf("i = %d\n", i); printf("j = %d\n", j); printf("k = %d\n", k);
return 0; }
输出: i=1 j=0 源自文库=0
2.逻辑运算符分析
(1)程序中的短路 ① || 从左向右开始计算:
当遇到为真的条件时停止计算,整个表达式为真;所有条件为假 时表达式才为假。 ② && 从左向右开始计算:
当遇到为假的条件时停止运算,整个表达式为假;所有条件为真
时表达式才为真。 (2)逻辑表达式中, && 比 || 具有更高的优先级。
(3)“!”究竟是什么?
C 语言中的逻辑非“!”只认得 0,只知道见了 0 就返回 1。因此 当其碰见的值不是 0 的时,其结果为 0。
例程: #include <stdio.h>
int main(void) {
printf("!0 = %d\n", !0); printf("!1 = %d\n", !1); printf("!100 = %d\n", !100); printf("!-1000 = %d\n", !-1000);
在 && 和 || 混合运算时,整个表达式被看作 || 表达式,编译 器从左向右开始计算 && 表达式,当某个 && 表达式的值为真时,停 止运算,整个表达式的值为真。 例程: #include <stdio.h> int g = 0; int f() {
printf("In f() ...\n"); return g++; }
return 0; }
输出: !0 = 1 !1 = 0 !100 = 0 !-1000 = 0
3.小结
(1)程序中的逻辑表达式遵从短路原则。 (2)在 && 与 || 混合运算时:
① 整个表达式被看作 || 表达式。 ② 从左往右计算 && 表达式。 ③ 最后计算 || 表达式。 (3)逻辑非 ! 运算符只认得 0 ① 碰见 0 返回 1,否则统统返回 0。
int main(void) {
if(g || f() && f()) //(true && g) || (f() && f()) printf("In if statement: %d\n", g);
printf("In main(): %d\n", g);
return 0; }
输出: In f() ... In main(): 1
2.有趣的问题
例程: #include <stdio.h> int main(void) {
int i = 0; int j = 0; int k = 0;
++i || ++j && ++k;
printf("i = %d\n", i); printf("j = %d\n", j); printf("k = %d\n", k);
return 0; }
输出: i=1 j=0 源自文库=0
2.逻辑运算符分析
(1)程序中的短路 ① || 从左向右开始计算:
当遇到为真的条件时停止计算,整个表达式为真;所有条件为假 时表达式才为假。 ② && 从左向右开始计算:
当遇到为假的条件时停止运算,整个表达式为假;所有条件为真
时表达式才为真。 (2)逻辑表达式中, && 比 || 具有更高的优先级。
(3)“!”究竟是什么?
C 语言中的逻辑非“!”只认得 0,只知道见了 0 就返回 1。因此 当其碰见的值不是 0 的时,其结果为 0。
例程: #include <stdio.h>
int main(void) {
printf("!0 = %d\n", !0); printf("!1 = %d\n", !1); printf("!100 = %d\n", !100); printf("!-1000 = %d\n", !-1000);
在 && 和 || 混合运算时,整个表达式被看作 || 表达式,编译 器从左向右开始计算 && 表达式,当某个 && 表达式的值为真时,停 止运算,整个表达式的值为真。 例程: #include <stdio.h> int g = 0; int f() {
printf("In f() ...\n"); return g++; }
return 0; }
输出: !0 = 1 !1 = 0 !100 = 0 !-1000 = 0
3.小结
(1)程序中的逻辑表达式遵从短路原则。 (2)在 && 与 || 混合运算时:
① 整个表达式被看作 || 表达式。 ② 从左往右计算 && 表达式。 ③ 最后计算 || 表达式。 (3)逻辑非 ! 运算符只认得 0 ① 碰见 0 返回 1,否则统统返回 0。
int main(void) {
if(g || f() && f()) //(true && g) || (f() && f()) printf("In if statement: %d\n", g);
printf("In main(): %d\n", g);
return 0; }
输出: In f() ... In main(): 1