逻辑运算,条件运算,逗号运算back

发布于 17 天前  223 次阅读  共 1100 字


逻辑运算

逻辑运算是对逻辑量进行的运算,结果只有0(false)或1(ture)
逻辑量是关系运算或逻辑运算的结果

例句:age>20&&age<30;
age的值在20到30之间(不包括数字20和30)
例句:index<0||index>99;
index的值不在0到99之间(不包括数字0和99)
例句:!age<20;
!是单目运算符,他的运算优先级要比<来得高,所以要先算!age,再去跟20比较。如果age是1,那么!age的值为0,如果age是0,那么!age的值为1。1和0都小于20,所以这个表达式的结果为0;

逻辑运算符的优先级:!>&&>|| !是单目运算符,优先级很高!
例句:!done &&(count>max);
先算!done,再算count>max,最后算&&;

目前学到的所有运算符优先顺序!

逻辑运算使用示例:
if(done==0){
if(fall==1){
printf("lalala");
}
}
改写成
if(done==0&&fall==1){
printf("lalala");
}

逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果了,就不会左右边的计算;
例句:a>0&&a++>1
如果a不大于0,那么a++>1不会进行计算,此逻辑运算的结果为0
对于&&,左边是false时就不做右边
对于||,左边是ture时就不做右边

条件运算符

if(count>20)
count=count-10;
else
count=count+10;
改写成

count=(count>20)?count-10:count+10;
?前面是条件,?后面是条件满足时做的动作,:后面是条件不满足时做的动作
条件运算符基本形式:
(条件)?条件满足时做的动作:条件不满足做的动作;
优先级:条件运算符的优先级高于赋值运算符,但是低于其他运算符
例句:
a++>1&&b-->2?a:b;
如果a++的值大于1且b--的值大于2时,结果是a,如果a++的值不大于1或者b--的值不大于2(任意一条)时,结果是b;
例句:
x=3*a>5?5:20;
如果x=3*a的值大于5的话,结果是5,否则是20

逗号运算符

逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。逗号的优先等级是所有运算符中最低的,所以他两边的表达式会先计算;逗号的组合关系时自左向右的,所以左边的表达式会先计算,而右边的表达式的值就留下来作为逗号运算的结果。
例句:i=3+4,5+6;
结果i=7,因为=的优先级大于,
例句:i=(3+4,5+6);
结果i=11,因为3+4,5+6用括号括起来了,所以先算3+4,5+6,而逗号运算符是把后面的值赋给前面。所以结果等于11