C语言逻辑运算符

在C语言中,逻辑运算符有&&、||、!

  • &&表示“与”的意思,需要两端的表达式的值都为true,该式的值才为true。
  • ||表示“或”的意思,两端的表达式的值只要有一端为true,该式的值就为true。
  • !表示“非”的意思,将该式的真值换成相反的真值,即false和true互换。

但是在C99里有这样的一个名为“短路”的特性

  • 使用&&时,如果左边false则右边不会执行
  • 使用||时,如果左边true则右边不会执行

&&运算符,举例

#include<stdio.h>
int main()
{
int a=-1,b=0;
if(a++&&b++)
printf("%d %d",b,a);
if(++b&&++a)
printf("%d %d",a,b);
return 0;
}

想想程序的输出结果是什么

答案是:

1 2

程序的流程是

先定义变量a=-1,b=0,然后进入第一个if()判断,&&左边的值是-1,右边的值为0,所以此if()下的语句不执行,但是由于&&左侧为true,所以&&右侧的b++也会得到执行,此行结束时,a的值为0,b的值为1。

第二次if(),左边的值为2,右边的值为1,所以`if()“下的语句得到执行,输出a的值1,b的值2。

||运算符同理,如果左边的表达式的值为true,则右边的表达式不会执行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。