- C编程教程
- C语言 - 首页
- C语言基础
- C语言 - 概述
- C语言 - 特性
- C语言 - 历史
- C语言 - 环境搭建
- C语言 - 程序结构
- C语言 - Hello World
- C语言 - 编译过程
- C语言 - 注释
- C语言 - 词法单元
- C语言 - 关键字
- C语言 - 标识符
- C语言 - 用户输入
- C语言 - 基本语法
- C语言 - 数据类型
- C语言 - 变量
- C语言 - 整数提升
- C语言 - 类型转换
- C语言 - 类型强制转换
- C语言 - 布尔值
- C语言中的常量和字面量
- C语言 - 常量
- C语言 - 字面量
- C语言 - 转义序列
- C语言 - 格式说明符
- C语言中的运算符
- C语言 - 运算符
- C语言 - 算术运算符
- C语言 - 关系运算符
- C语言 - 逻辑运算符
- C语言 - 位运算符
- C语言 - 赋值运算符
- C语言 - 一元运算符
- C语言 - 自增和自减运算符
- C语言 - 三元运算符
- C语言 - sizeof 运算符
- C语言 - 运算符优先级
- C语言 - 其他运算符
- C语言中的决策
- C语言 - 决策
- C语言 - if 语句
- C语言 - if...else 语句
- C语言 - 嵌套 if 语句
- C语言 - switch 语句
- C语言 - 嵌套 switch 语句
- C语言中的循环
- C语言 - 循环
- C语言 - while 循环
- C语言 - for 循环
- C语言 - do...while 循环
- C语言 - 嵌套循环
- C语言 - 无限循环
- C语言 - break 语句
- C语言 - continue 语句
- C语言 - goto 语句
- C语言中的函数
- C语言 - 函数
- C语言 - 主函数
- C语言 - 按值调用函数
- C语言 - 按引用调用函数
- C语言 - 嵌套函数
- C语言 - 可变参数函数
- C语言 - 用户自定义函数
- C语言 - 回调函数
- C语言 - return 语句
- C语言 - 递归
- C语言中的作用域规则
- C语言 - 作用域规则
- C语言 - 静态变量
- C语言 - 全局变量
- C语言中的数组
- C语言 - 数组
- C语言 - 数组的特性
- C语言 - 多维数组
- C语言 - 将数组传递给函数
- C语言 - 从函数返回数组
- C语言 - 变长数组
- C语言中的指针
- C语言 - 指针
- C语言 - 指针和数组
- C语言 - 指针的应用
- C语言 - 指针运算
- C语言 - 指针数组
- C语言 - 指向指针的指针
- C语言 - 将指针传递给函数
- C语言 - 从函数返回指针
- C语言 - 函数指针
- C语言 - 指向数组的指针
- C语言 - 指向结构体的指针
- C语言 - 指针链
- C语言 - 指针与数组
- C语言 - 字符指针和函数
- C语言 - 空指针
- C语言 - void 指针
- C语言 - 悬空指针
- C语言 - 解引用指针
- C语言 - 近、远和巨型指针
- C语言 - 指针数组的初始化
- C语言 - 指针与多维数组
- C语言中的字符串
- C语言 - 字符串
- C语言 - 字符串数组
- C语言 - 特殊字符
- C语言结构体和联合体
- C语言 - 结构体
- C语言 - 结构体和函数
- C语言 - 结构体数组
- C语言 - 自引用结构体
- C语言 - 查找表
- C语言 - 点(.)运算符
- C语言 - 枚举 (enum)
- C语言 - 结构体填充和打包
- C语言 - 嵌套结构体
- C语言 - 匿名结构体和联合体
- C语言 - 联合体
- C语言 - 位域
- C语言 - Typedef
- C语言中的文件处理
- C语言 - 输入输出
- C语言 - 文件I/O (文件处理)
- C语言预处理器
- C语言 - 预处理器
- C语言 - 编译指令
- C语言 - 预处理器运算符
- C语言 - 宏
- C语言 - 头文件
- C语言中的内存管理
- C语言 - 内存管理
- C语言 - 内存地址
- C语言 - 存储类
- 其他主题
- C语言 - 错误处理
- C语言 - 可变参数
- C语言 - 命令执行
- C语言 - 数学函数
- C语言 - static关键字
- C语言 - 随机数生成
- C语言 - 命令行参数
- C编程资源
- C语言 - 问答
- C语言 - 快速指南
- C语言 - 速查表
- C语言 - 有用资源
- C语言 - 讨论
C语言逻辑运算符
C语言中的逻辑运算符的结果是真或假。逻辑运算符通常与布尔操作数一起使用。
逻辑与运算符(&&)和逻辑或运算符(||)都是二元的(需要两个操作数)。逻辑非运算符(!)是一元运算符。
由于C语言将“0”视为假,将任何非零数字视为真,因此逻辑运算符的任何操作数都将转换为布尔数据。
下表显示了C语言中的逻辑运算符:
运算符 | 描述 | 示例 |
---|---|---|
&& | 称为逻辑与运算符。如果两个操作数均非零,则条件为真。 | (A && B) |
|| | 称为逻辑或运算符。如果两个操作数中的任何一个非零,则条件为真。 | (A || B) |
! | 称为逻辑非运算符。它用于反转其操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将使其为假。 | !(A) |
逻辑运算符的结果遵循布尔代数的原理。逻辑运算符遵循以下真值表。
逻辑与(&&)运算符
C语言中的&&运算符充当逻辑与运算符。它具有以下真值表:
a | b | a&&b |
---|---|---|
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
上述真值表显示,只有当两个操作数都为真时,&& 的结果才为真。
逻辑或(||)运算符
C语言使用双竖线符号 (||) 作为逻辑或运算符。它具有以下真值表:
a | b | a||b |
---|---|---|
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
上述真值表显示,当任何一个操作数为真时,|| 运算符的结果为真,当两个操作数都为假时,结果为假。
逻辑非(!)运算符
逻辑非! 运算符否定布尔操作数的值。真变为假,假变为真。以下是它的真值表:
A | !a |
---|---|
真 | 假 |
假 | 真 |
与其他两个逻辑运算符&& 和 ||不同,逻辑非运算符! 是一元运算符。
示例1
以下示例显示了在C语言中使用逻辑运算符:
#include <stdio.h> int main(){ int a = 5; int b = 20; if (a && b){ printf("Line 1 - Condition is true\n" ); } if (a || b){ printf("Line 2 - Condition is true\n" ); } /* lets change the value of a and b */ a = 0; b = 10; if (a && b){ printf("Line 3 - Condition is true\n" ); } else { printf("Line 3 - Condition is not true\n" ); } if (!(a && b)){ printf("Line 4 - Condition is true\n" ); } return 0; }
输出
运行代码并检查其输出:
Line 1 - Condition is true Line 2 - Condition is true Line 3 - Condition is not true Line 4 - Condition is true
示例2
在C语言中,char 类型是int 类型的子集。因此,逻辑运算符也可以与 char 类型一起使用。
#include <stdio.h> int main(){ char a = 'a'; char b = '\0'; // Null character if (a && b){ printf("Line 1 - Condition is true\n" ); } if (a || b){ printf("Line 2 - Condition is true\n" ); } return 0; }
输出
运行代码并检查其输出:
Line 2 - Condition is true
逻辑运算符通常用于构建复合布尔表达式。与关系运算符一起,逻辑运算符也用于C语言中的决策控制和循环语句。
示例3
以下示例显示了C程序中的复合布尔表达式:
#include <stdio.h> int main(){ int phy = 50; int maths = 60; if (phy < 50 || maths < 50){ printf("Result:Fail"); } else { printf("Result:Pass"); } return 0; }
输出
Result:Pass
示例4
类似的逻辑也可以使用&& 运算符表示如下:
#include <stdio.h> int main(){ int phy = 50; int maths = 60; if (phy >= 50 && maths >= 50){ printf("Result: Pass"); } else { printf("Result: Fail"); } return 0; }
输出
运行代码并检查其输出:
Result: Pass
示例5
以下C代码在while 循环中使用了非运算符:
#include <stdio.h> int main(){ int i = 0; while (!(i > 5)){ printf("i = %d\n", i); i++; } return 0; }
输出
在上面的代码中,while 循环持续迭代,直到表达式“!(i > 5)”变为假,这将发生在“i”的值超过5时。
i = 0 i = 1 i = 2 i = 3 i = 4 i = 5
C语言有逻辑运算符的位运算符对应物,例如按位与(&)、按位或(|)和二进制非或补(~)运算符。
c_operators.htm
广告