|和||的区别,C语言|和||的区别详解
在 C 语言中,“||”是逻辑操作符(或),它的操作数是布尔型,即只有“0”(表示 false)和“1”(表示 true)两个数值。C 语言规定,在逻辑运算中,所有非 0 的数值都被看成 1 处理。
而“|”是位操作符(或),其操作数是位序列。位序列可以是字符型、整型与长短整型等(通常情况下选择无符号整型)。在位运算中,相应的位之间进行逻辑运算,因此,从逻辑上讲,位运算过程包含多个逻辑运算过程。
下面通过一个示例来了解两者之间的区别。
程序运行结果为:
sizeof(x || y): 4
x || y : 1(True)
sizeof(x | y): 4
x | y : 1101
而“|”是位操作符(或),其操作数是位序列。位序列可以是字符型、整型与长短整型等(通常情况下选择无符号整型)。在位运算中,相应的位之间进行逻辑运算,因此,从逻辑上讲,位运算过程包含多个逻辑运算过程。
下面通过一个示例来了解两者之间的区别。
#include <stdio.h> int main (void) { unsigned int x = 0x1101; unsigned int y = 0x1100; /*逻辑操作*/ printf("sizeof(x || y): %d\n", sizeof(x || y)); if(x||y) { printf("x || y : %d(True) \n", x||y); } else { printf("x || y : %d(False) \n", x||y); } /*位操作*/ printf("sizeof(x | y): %d\n", sizeof(x | y)); printf("x | y : %x \n", x|y); return 0; }因为变量 x 与变量 y 都不为 0,所以执行语句 if(x||y) 返回 1。而当执行 x|y(即 1101|1100)时,相应的位之间逐一地进行逻辑运算(或),因此所得到的结果为 1101。
程序运行结果为:
sizeof(x || y): 4
x || y : 1(True)
sizeof(x | y): 4
x | y : 1101
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算