目录
&& --- 逻辑与操作符
|| --- 逻辑或操作符
&& --- 逻辑与操作符
逻辑与操作符有并且的意思,一般用于判断语句中
逻辑与操作符运行规则是都要为真,才会继续执行或计算
360笔试题:
有关前置++(--),后置++(--)的知识请见:单目操作符-CSDN博客
#include<stdio.h>
int main()
{int i = 0, a = 0, b = 2, c = 3, d = 4;i = a++ && ++b && d++;printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);return 0;
}
代码分析:a++ && ++b && d++
a++:a初始值为0,后置++,先计算后++,0为假,那么&& ++b && d++就不会计算
所以结果为:a = 1,b = 2,c = 3,d = 4
代码验证:
得出结论:逻辑与操作符左边为假,右边就不会计算
将a的初始值更改为1,会有怎样的结果?
#include<stdio.h>
int main()
{int i = 0, a = 1, b = 2, c = 3, d = 4;i = a++ && ++b && d++;printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);return 0;
}
代码分析:a++ && ++b && d++
a++:a初始值为1,后置++,1为真(一切非0都为真),所以要计算 && ++b
a++ && ++b:a后置++后为2,b初始值为2,前置++后为3,a++ && ++b整体的结果同样为真,在C语言中,真的固定值为1,所以&& d++也要计算
a++ && ++b && d++:d初始值为4,后置++,执行完此表达式后为5
所以结果为:a = 2,b = 3,c = 3,d = 5
代码验证:
|| --- 逻辑或操作符
逻辑或操作符有或者的意思,只要有一个表达式为真即可
相关代码题:
#include<stdio.h>
int main()
{int i = 0, a = 0, b = 2, c = 3, d = 4;i = a++ || ++b || d++;printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);return 0;
}
代码分析:a++ || ++b || d++
a++:a初始值为0,后置++,逻辑与只要有一个为真即可,所以要判断 || ++b是否为真
a++ || ++b:a后置++后为1,b初始值为2,前置++后为3,|| ++b为真,所以 || d++就不会计算
所以结果为:a = 1,b = 3,c = 3,d = 4
代码验证:
得出结论:逻辑或操作符左边为真,右边不再计算
将a的初始值更改为1,会有怎样的结果?
#include<stdio.h>
int main()
{int i = 0, a = 1, b = 2, c = 3, d = 4;i = a++ || ++b || d++;printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);return 0;
}
代码分析:
a++:a初始值为1,后置++,a为真,那么|| ++b || d++都不会计算,表达式结束后a为2
所以结果为:a = 2,b = 2,c = 3,d = 4
代码验证: