学习自狄泰软件学院唐佐临老师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$