【编程基础】C语言逻辑运算符

C语言关系运算符和逻辑运算符几乎无所不在,比如在循环语句、分支语句、逻辑判断等语句块中都会出现。学好这部分对学好C语言具有重要作用。

C语言中有一共有如下6中关系运算符: < 小于 <= 小于或等于 > 大于 >= 大于或等于 == 两边相等 != 两边不相等

关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同。他们比数学运算优先级要低。

关系运算符所在的表达式称为关系表达式,它的运算结果是一个逻辑结果,真或者假。比如:

5 > 3 结果为真 5 >= 5 结果为真 5 < 3 为假 5 <= 5 为真 3 + 2 > 4 为真

C语言中的逻辑运算符一共有三种:

&& 逻辑与(参与运算的两个量都为真时,结果才为真,否则为假) || 逻辑或(参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果才为假) ! 逻辑非(逻辑取反,非真结果为假,非假结果为真)

与运算符&&和或运算符||均为双目运算符。具有左结合性。非运算符!为单目运算符,具有右结合性。其中与运算和或运算优先级一样,但是低于非运算。C语言规定,数字运算时,0为假,而非0为真。

注意,逻辑运算&&中,只要前面的运算后假,后面的运算就不会在计算了。

比如有下面的代码段: int a = 1, b = 2; if ((a > b) && GetVal()) { ... }

这个代码中,由于逻辑与&&前面的(a > b)这个已经不满足了,程序就不会再去执行后面的GetVal函数了,这一点尤其注意。 同样在或运算||中,如果运算符左边的已经为真,则后面的部分也不会在计算,还是上面这个a和b。

if ((a < b) || GetVal()) { ... }

这里的GetVal函数也不会执行,因为前面以及得出结论,整个结果一定是真,后面就不在计算。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-09-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏desperate633

详解javascript中的即时函数,内部函数,能重写自身的函数即时函数内部函数返回函数的函数能重写自己的函数小结

在上篇谈到匿名函数和回调函数的基础上,我们接着介绍javascript中的即时函数,内部函数,返回函数的函数,能重写自身的函数等几种常见的函数类型及使用方法。只...

9210
来自专栏无所事事者爱嘲笑

function前加运算符实现立即执行函数

10620
来自专栏C/C++基础

C++中基类私有成员会被继承吗

在类的继承中,类的私有成员在派生类中是“不可见“的,这种”不可见“是指在派生类的成员函数中,或者通过派生类的对象(指针,引用)不能直接访问它们。但是,不能直接访...

11020
来自专栏十月梦想

each()list()while遍历数组

each()函数:需要一个数组作为参考,each函数返回1,0,key,value键值,0,key返回键,1,value对应的值,

11010
来自专栏尾尾部落

[剑指offer] 把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字...

32220
来自专栏LhWorld哥陪你聊算法

python 使用小结

使用Python 已经一段时间了 ,现将python 中可能用到的技巧和一些知识点分享如下。

11910
来自专栏null的专栏

C/C++——set的基本操作总结

set容器中只能存储键,是单纯的键的集合,其中键是不能重复的。 set支持大部分的map的操作,但是set不支持下标的操作,而且没有定义mapped_type...

31530
来自专栏算法与数据结构

栈与递归 实现 十进制转二进制

6-4 十进制转换二进制(15 分) 本题要求实现一个函数,将正整数n转换为二进制后输出。 函数接口定义: void dectobin( int n ); 函数...

32050
来自专栏java小白

JAVA协变返回类型

21240
来自专栏Hongten

java中静态变量和实例变量到底有什么区别_看了就知道啦

==================================================

9430

扫码关注云+社区

领取腾讯云代金券