按位运算符
用于对位模式执行按位运算的位运算符。
与处理字节的常见逻辑运算符不同,位运算符可以检查或者设置字节中的每个单独位。
如果两个操作数的对应位为 1,则按位 AND 的输出为 1.
如果操作数的任一位为 0,则对应位的结果为 0。
十进制值被转换为二进制值,二进制值是位序列,按位运算符处理这些位。
C语言中的按位运算符
- &(按位与)
- | (按位或者)
- ~(按位或者)
- ^ (异或者)
- <<(左移)
- >>(右移)。
位运算和位运算的真值表:
| x | y | x | y | x & y | x^y |
|--- |--- |--- |--- |--- |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 |
运算符 | 说明 | 例子 |
---|---|---|
& | 如果两个操作数中都存在二进制 AND 运算符,则将其复制到结果中。 | A & B |
| | 如果 任一操作数中存在二进制 OR 运算符,则复制一点。 | A | B |
^ | 二进制 XOR 运算符复制该位,如果 它在一个操作数中设置,但不能同时在两个操作数中设置。 | A^B |
~ | Binary One 的补码运算符 是一元的,具有“翻转”位的效果。 | ~A |
<< | 二元左移运算符。左操作 数值向左移动 右操作数指定的位数。 | A << 1 |
>> | 二元右移运算符。左操作数的 值向右移动 右操作数指定的位数。 | A >> 1 |
按位运算符示例
#include int main() { int x=00101000; // 40 int y=01010000; // 80 int result=x&y;// 按位与操作 printf("Result= %d",result);//结果为00000000 return 0; }
杂项/特殊运算符
C语言还支持 一些其他重要的运算符,包括 sizeof
和? :
运算符 | 说明 | 例子 |
---|---|---|
sizeof() | 返回变量的大小。大小是该变量的数据类型保留的字节。 | sizeof(a) |
& | 返回变量的地址。 | & a; |
* | 指向变量的指针。 | *a; |
? : | 条件表达式。 | (a > b) ? X : Y,如果条件为真,然后返回值 X ,否则返回值 Y |
其他运算符示例
#include int main() { int x=1; int y; y=sizeof x; printf("y= %d",y); return 0; }
与其他编程语言一样,C 语言也支持一组运算符来对变量执行不同类型的操作。
什么是运算符?
运算符被定义为表示某些数学或者逻辑运算的符号。
它可能需要一个或者多个操作数来执行其操作。
例如,算术运算符执行算术运算,例如 加号 (+) 运算符执行加法运算。
操作数
操作数是运算符用来计算表达式或者操作的变量或者对象。
例如:'y + x' 是一个表达式,其中 'x' 和 'y' 是操作数,而 '+' 是一个运算符。
所有表达式必须至少有一个操作数。
关系运算符:
关系运算符检查两个或者多个操作数之间的关系是真还是假。
在这里,我们可以借助给定的表查看 C 支持的所有关系运算符。
假设变量 A 为 10,变量 B 为 20,则
Operator | 描述 | 例子 |
---|---|---|
== | 如果两个操作数的值相等,则条件为真,返回 1,否则返回 0(假)。 | A==B。 |
!= | 如果值不相等, 则条件变为真并返回 1,否则返回 0(假)。 | A != B。 |
> | 如果左操作数的值大于右操作数的值,则条件成立。 | A > B |
< | 如果左操作数的值小于右操作数的值,则条件为真并返回 1,否则返回 0(假)。 | A < B |
>= | 或者左操作数的值大于或者等于右操作数的值,则条件为真并返回 1,否则返回 0(假)。 | A>=B |
<= | 或者左操作数的值小于或者等于右操作数的值,则条件为真并返回 1,否则返回 0(假)。 | A<=B |
关系运算符示例
#include<stdio.h> int main() { int x=1; int y=5; int result=x<y;// result等于1或者0 printf("Result %d",result); return 0; }
逻辑运算符
逻辑运算符主要用于控制程序流程。
逻辑运算符的概念很简单。
逻辑运算符允许程序根据多个条件做出决定。
每个操作数都被认为是一个可以评估为真或者假值的条件。
然后使用条件的值来确定总体值。
下面是C语言支持的所有逻辑运算符表:
运算符 | 描述 | 例子 |
---|---|---|
&& | 逻辑与运算符。如果两个操作数都非零,则条件为真并返回 1,否则返回假 0。 | A&B |
|| | 逻辑 OR 运算符。如果两个操作数中的任何一个为非零,则条件变为真并返回 1 否则返回假 0。 | A || B |
! | 逻辑非运算符。它用于反转其操作数的逻辑状态。 如果条件为真,则逻辑非运算符将使其为假。 | !A&&B |
逻辑运算符示例
#include <stdio.h> int main() { int x=1; int y=5; int result=(x<y)||(x>y);//Logical OR Operator printf("result= %d",result); return 0; }
赋值运算符
在赋值运算符的帮助下,我们可以为变量分配一个新值。
下表列出了 C 语言支持的赋值运算符:
运算符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符。 将右侧操作数的值分配给左侧操作数 | C = A + B |
+= | 添法 并 赋值运算符。 它将右操作数添加到左操作数并将结果分配给左操作数。 | C += A |
-= | 减法 并 赋值运算符。 它从左操作数中减去右操作数,并将结果分配给左操作数。 | C -= A |
*= | 乘以 并 赋值运算符。 它将右操作数与左操作数相乘,并将结果分配给左操作数。 | C *= A |
/= | 除以 并 赋值运算符。 它将左操作数与右操作数相除,并将结果分配给左操作数。 | C /= A |
%= | 模数 并 赋值运算符。 它使用两个操作数取模并将结果分配给左操作数。 | C%=A |
<<= | 左移 AND 赋值运算符。 | C <<3 |
>>= | 右移 AND 赋值运算符。 | C >>=5 ,等同于 C = C >> 5 |
&= | 按位 AND 赋值运算符。 | C &=5 与 C = C & 5 相同 |
^= | 按位异或者和赋值运算符。 | C ^= 2 ,等同于 C = C ^ 5 |
|= | 按位包含 OR 和赋值运算符。 | C |= 2 ,等于 C = C | 5 |
赋值运算符示例
#include int main() { int x; x=1; x+=5;// 加法并赋值 printf("x= %d",x); return 0; }
算术运算符
算术运算符执行一些数学运算,例如加法、减法、乘法和除法。
以下是C语言支持的算术运算符表:
Operator | 描述 | 例子 |
---|---|---|
+ | 添加两个操作数。 | A + B |
- | 从第一个操作数中减去第二个操作数。 | A-B |
* | 将两个操作数相乘。 | A * B |
/ | 分子除以分母,得到商。 | 乙/甲 |
% | 模数运算符:计算整数除法后的余数。 | B % A |
++ | 增量运算符将整数值加一。 | A++ |
— | 递减运算符将整数值减一。 | A-- |
算术运算符示例
#include <stdio.h> int main() { int x=1; int y=5; int result=x+y; printf("5加1等于%d",result); return 0; }
运算符类型
运算符可以这样分类:
- 算术运算符
- 关系或者比较运算符
- 逻辑运算符
- 按位运算符
- 赋值运算符
- 杂项/特殊运算符