七、逻辑操作符
0x00 逻辑与 &&
📚 说明:逻辑与,a和b都为真时结果才为真;(都为真才为真)
💬 代码演示:
1. a和b都为真时,结果就为真,c = 1;
int main() { int a = 3; int b = 5; int c = a && b; // 逻辑与 “并且” a和b都为真时才返回真 printf("%d\n", c); return 0; }
🚩 运行结果: 1(真)
2. a和b只要有一个为假,结果就为假,c = 0;
int main() { int a = 0; int b = 5; int c = a && b; printf("%d\n", c); return 0; }
🚩 运行结构: 0(假)
0x01 逻辑或 ||
📚 说明:a和b有一个为真,结果就为真;(有真则为真)
💬 代码演示:
1. a和b只要有一个为真,结果就为真;
int main() { int a = 0; int b = 5; int c = a || b; //逻辑与 “并且” a和b都为真时才返回真 printf("%d\n", c); return 0; }
🚩 运行结果: 1 (真)
2. a和b同时为假的时候,结果才为假;
int main() { int a = 0; int b = 0; int c = a || b; //逻辑与 “并且” a和b都为真时才返回真 printf("%d\n", c); // 0 return 0; }
🚩 运行结果: 0 (假)
0x02 练习
📃 笔试题:(出自360)
❓ 1. 程序输出的结果是什么
int main() { int i = 0, a=0,b=2,c=3,d=4; i = a++ && ++b && d++; printf("a=%d\n b=%d\n c=%d\n d=%d\n", a, b, c, d); return 0; }
🚩 运行结果: a=1;b=2;c=3;d=4
🔑 解析:
首先i的初始值是0,执行i = a++ && ++b && d++ 时,先执行的是a++,a初始值为0,因为是后置++的原因,此时a仍然为0,逻辑与碰到0,就不会再往下继续执行了,所以后面的++b,d++都不算数。打印时,因为刚才a++,所以此时a=1,打印出来的结果自然是a=1,b=2,c=3,d=4;
❓ 2. 程序的输出结果是什么
int main() { int i = 0, a=0,b=2,c=3,d=4; i = a++ || ++b || d++; printf("a=%d\n b=%d\n c=%d\n d=%d\n", a, b, c, d); return 0; }
🚩 运行结果: a=1;b=3;c=3;d=5
🔑 解析:
i=0,执行 i = a++ || ++b || d++ 时,先执行a++,因为是后置++所以此时a还是为0,但是因为是逻辑或,会继续往下走,++b为前置++,此时b为3,为真,就不会往下继续执行了,d++不算数。打印时,因为刚才a++,d++,所以此时a=1,打印出来的结果为 a=1,b=3,c=3,d=4;
🔺 总结:
1. 逻辑与:碰到假就停;(只要左边为假,右边就不算了)
2. 逻辑或:碰到真就停;(只要左边为真,右边就不算了)
八、条件操作符
📚 定义:
① 表达式1的结果如果为真,计算表达式2;
② 如果表达式1的结果为假,计算表达式3;
📌 注意事项:三目操作符不要写的过于复杂,否则可读性会很差;
💬 代码演示:
1. if...else写法:
int main() { int a = 3; int b = 0; if (a > 5) b = 1; else b = -1; return 0; }
2. 将上面代码转换成条件表达式:
int main() { int a = 3; int b = 0; b = a>5 ? 1 : -1; // 条件操作符 return 0; }
💬 使用条件表达式实现找两个数中的较大值:
int main() { int a = 10; int b = 20; int max = 0; max = (a>b ? a : b ); printf("max = %d", max); return 0; }
九、逗号表达式
❓ 什么是逗号表达式
💡 逗号表达式,顾名思义,用逗号隔开的多个表达式;
📚 定义:从左向右依次执行,整个表达式的结果是最后一个表达式的结果;
💬 代码演示:逗号表达式的用法
int main() { int a = 1; int b = 2; int c = (a>b, a=b+10, a, b = a+1); // 无结果 12 无结果 12+1=13 printf("%d\n", c); return 0; }
🚩 运行结果: 13
💬 判断条件的逗号表达式
if(a = b + 1, c = a / 2, d > 0) // 从左向右依次执行后,d>0则条件为真
💬 逗号表达式的应用:简化代码结构



