学习自狄泰软件学院唐佐临老师C语言课程,文章中图片取自老师的PPT,仅用于个人笔记。
实验1 :&& 与 || 混合运算
实验2: && 与 || 混合运算 加强
实验3:逻辑非 !实验


实验1 :&& 与 || 混合运算
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
int k = 0;
++i || ++j && ++k;
printf("%d\n", i);
printf("%d\n", j);
printf("%d\n", k);
return 0;
}
mhr@ubuntu:~/work/C$ ls
test1.c
mhr@ubuntu:~/work/C$
mhr@ubuntu:~/work/C$ gcc test1.c
mhr@ubuntu:~/work/C$ ls
a.out test1.c
mhr@ubuntu:~/work/C$
mhr@ubuntu:~/work/C$ ./a.out
1
0
0
mhr@ubuntu:~/work/C$


在&& 与 || 混合运算的时候,整个表达式被看作是 || 的表达式,这是因为 || 的优先级低于&&,所以最后做 ||运算,编译器会从最至右逐个计算 &&表达式的值,这才是真正的在逻辑运算符表达式中 && 的优先级 高于 || 的体现,当某个&&表达式的值为真的时候,整个表达式就立即停止运算!!!
#include <stdio.h>
int g = 0;
int f()
{
printf("In f()...\n");
return g++;
}
int main()
{
//(true && g) || (f() && f()) --> (true && 0) || (f() && f()) --> (0) || (0 && f()) --> 表达式结束 为0
if( g || f() && f() )
{
printf("In if statement: %d\n", g);
}
printf("In main(): %d\n", g);
return 0;
}
mhr@ubuntu:~/work/C$ gcc test1.c
mhr@ubuntu:~/work/C$ ./a.out
In f()...
In main(): 1
mhr@ubuntu:~/work/C$

#include <stdio.h>
int main()
{
printf("%d\n", !0);
printf("%d\n", !1);
printf("%d\n", !100);
printf("%d\n", !-1000);
return 0;
}
mhr@ubuntu:~/work/C$ gcc test1.c
mhr@ubuntu:~/work/C$ ./a.out
1
0
0
0
mhr@ubuntu:~/work/C$

本文深入探讨C语言中逻辑运算符&&、||和!的实际应用,通过具体实验展示运算符的优先级与短路特性。实验涵盖了混合运算、逻辑非操作及函数调用过程中的逻辑判断,揭示了C语言逻辑运算符背后的运行机制。
141

被折叠的 条评论
为什么被折叠?



