C语言包含丰富的内置运算符,并提供以下类型的运算符-
- 算术运算符
- 关系运算符
- 逻辑运算符
- 按位运算符
- 赋值运算符
- Misc运算符
算术运算符
下表显示了C语言支持的所有算术运算符。假设变量 A =10,变量 B=20,然后-
运算符 | 描述 | 示例 |
---|---|---|
+ | 相加 | A + B=30 |
- | 相减 | A - B=-10 |
* | 相乘 | A * B=200 |
/ | 相除 | B/A=2 |
% | 取模 | B % A=0 |
++ | 递增 | A++=11 |
-- | 递减 | A--=9 |
尝试以下示例以了解C中可用的所有算术运算符-
#include <stdio.h> main() { int a = 21; int b = 10; int c ; c = a + b; printf("Line 1 - Value of c is %d\n", c ); c = a - b; printf("Line 2 - Value of c is %d\n", c ); c = a * b; printf("Line 3 - Value of c is %d\n", c ); c = a / b; printf("Line 4 - Value of c is %d\n", c ); c = a % b; printf("Line 5 - Value of c is %d\n", c ); c = a++; printf("Line 6 - Value of c is %d\n", c ); c = a--; printf("Line 7 - Value of c is %d\n", c ); }
当您编译并执行上述程序时,它将产生以下结果-
Line 1 - Value of c is 31 Line 2 - Value of c is 11 Line 3 - Value of c is 210 Line 4 - Value of c is 2 Line 5 - Value of c is 1 Line 6 - Value of c is 21 Line 7 - Value of c is 22
关系运算符
下表显示了C支持的所有关系运算符。假设变量 A=10,变量 B=20,则-
运算符 | 描述 | 示例 |
---|---|---|
== | 判断是否相等 | (A == B) is not true. |
!= | 判断是否不相等 | (A != B) is true. |
> | 大于 | (A > B) is not true. |
< | 小于 | (A < B) is true. |
>= | 大于或等于 | (A >= B) is not true. |
<= | 小于或等于 | (A <= B) is true. |
尝试以下示例以了解C中可用的所有关系运算符-
#include <stdio.h> main() { int a = 21; int b = 10; int c ; if( a == b ) { printf("Line 1 - a is equal to b\n" ); } else { printf("Line 1 - a is not equal to b\n" ); } if ( a < b ) { printf("Line 2 - a is less than b\n" ); } else { printf("Line 2 - a is not less than b\n" ); } if ( a > b ) { printf("Line 3 - a is greater than b\n" ); } else { printf("Line 3 - a is not greater than b\n" ); } /* 让我们改变 a 和 b 的值 */ a = 5; b = 20; if ( a <= b ) { printf("Line 4 - a is either less than or equal to b\n" ); } if ( b >= a ) { printf("Line 5 - b is either greater than or equal to b\n" ); } }
当您编译并执行上述程序时,它将产生以下结果-
Line 1 - a is not equal to b Line 2 - a is not less than b Line 3 - a is greater than b Line 4 - a is either less than or equal to b Line 5 - b is either greater than or equal to b
逻辑运算符
下表显示了C语言支持的所有逻辑运算符。假设变量 A=1,变量 B=0,则-
运算符 | 描述 | 示例 |
---|---|---|
&& | 逻辑AND,两边都为true,则返回true,否则false | (A && B) is false. |
|| | 逻辑OR,两边只要有一边是true,则返回true | (A || B) is true. |
! | 逻辑否,如果A为true,!A否为false | !(A && B) is true. |
尝试以下示例以了解C中可用的所有逻辑运算符-
#include <stdio.h> main() { int a = 5; int b = 20; int c ; if ( a && b ) { printf("Line 1 - Condition is true\n" ); } if ( a || b ) { printf("Line 2 - Condition is true\n" ); } /* 让我们改变 a 和 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" ); } }
当您编译并执行上述程序时,它将产生以下结果-
Line 1 - Condition is true Line 2 - Condition is true Line 3 - Condition is not true Line 4 - Condition is true
按位运算符
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
假设A=60和B=13为二进制格式,它们将如下所示-
A=0011 1100 B=0000 1101 ----------------- A&B=0000 1100 A | B=0011 1101 A ^ B=0011 0001 ~A=1100 0011
下表列出了C支持的按位运算符。假设变量'A'=60,变量'B'=13,然后-
运算符 | 描述 | 示例 |
---|---|---|
& | 按位AND运算 | (A & B)=12, i.e., 0000 1100 |
| | 按位OR运算 | (A | B)=61, i.e., 0011 1101 |
^ | 按位异或运算 | (A ^ B)=49, i.e., 0011 0001 |
~ | 按位非运算 | (~A )=~(60), i.e,. -0111101 |
<< | 二进制左移运算 | A << 2=240 i.e., 1111 0000 |
>> | 二进制右移运算 | A >> 2=15 i.e., 0000 1111 |
尝试以下示例以了解C中可用的所有按位运算符-
#include <stdio.h> main() { unsigned int a = 60; /* 60=0011 1100 */ unsigned int b = 13; /* 13=0000 1101 */ int c = 0; c = a & b; /* 12=0000 1100 */ printf("Line 1 - Value of c is %d\n", c ); c = a | b; /* 61=0011 1101 */ printf("Line 2 - Value of c is %d\n", c ); c = a ^ b; /* 49=0011 0001 */ printf("Line 3 - Value of c is %d\n", c ); c = ~a; /*-61=1100 0011 */ printf("Line 4 - Value of c is %d\n", c ); c = a << 2; /* 240=1111 0000 */ printf("Line 5 - Value of c is %d\n", c ); c = a >> 2; /* 15=0000 1111 */ printf("Line 6 - Value of c is %d\n", c ); }
当您编译并执行上述程序时,它将产生以下结果-
Line 1 - Value of c is 12 Line 2 - Value of c is 61 Line 3 - Value of c is 49 Line 4 - Value of c is -61 Line 5 - Value of c is 240 Line 6 - Value of c is 15
赋值运算符
下表列出了C语言支持的赋值运算符-
运算符 | 描述 | 示例 |
---|---|---|
= | 赋值运算符 | C=A + B will assign the value of A + B to C |
+= | 先加再赋值。 | C += A is equivalent to C=C + A |
-= | 先减后赋值 | C -= A is equivalent to C=C - A |
*= | 先乘后赋值 | C *= A is equivalent to C=C * A |
/= | 先除后赋值 | C /= A is equivalent to C=C/A |
%= | 取模后赋值 | C %= A is equivalent to C=C % A |
<<= | 左移后赋值 | C <<= 2 is same as C=C << 2 |
>>= | 右移后赋值 | C >>= 2 is same as C=C >> 2 |
&= | 按位与赋值运算符 | C &= 2 is same as C=C & 2 |
^= | 按位非赋值运算符 | C ^= 2 is same as C=C ^ 2 |
|= | 按位或(OR)和赋值运算符。 | C |= 2 is same as C=C | 2 |
尝试以下示例以了解C中可用的所有赋值运算符-
#include <stdio.h> main() { int a = 21; int c ; c = a; printf("Line 1 -= Operator Example, Value of c=%d\n", c ); c += a; printf("Line 2 - += Operator Example, Value of c=%d\n", c ); c -= a; printf("Line 3 - -= Operator Example, Value of c=%d\n", c ); c *= a; printf("Line 4 - *= Operator Example, Value of c=%d\n", c ); c /= a; printf("Line 5 - /= Operator Example, Value of c=%d\n", c ); c = 200; c %= a; printf("Line 6 - %= Operator Example, Value of c=%d\n", c ); c <<= 2; printf("Line 7 - <<= Operator Example, Value of c=%d\n", c ); c >>= 2; printf("Line 8 - >>= Operator Example, Value of c=%d\n", c ); c &= 2; printf("Line 9 - &= Operator Example, Value of c=%d\n", c ); c ^= 2; printf("Line 10 - ^= Operator Example, Value of c=%d\n", c ); c |= 2; printf("Line 11 - |= Operator Example, Value of c=%d\n", c ); }
当您编译并执行上述程序时,它将产生以下结果-
Line 1 -= Operator Example, Value of c=21 Line 2 - += Operator Example, Value of c=42 Line 3 - -= Operator Example, Value of c=21 Line 4 - *= Operator Example, Value of c=441 Line 5 - /= Operator Example, Value of c=21 Line 6 - %= Operator Example, Value of c=11 Line 7 - <<= Operator Example, Value of c=44 Line 8 - >>= Operator Example, Value of c=11 Line 9 - &= Operator Example, Value of c=2 Line 10 - ^= Operator Example, Value of c=0 Line 11 - |= Operator Example, Value of c=2
sizeof和三元运算符
除了上面讨论的运算符,还有一些其他重要的运算符。
Operator | 描述 | Example |
---|---|---|
sizeof() | 返回变量的大小。 | sizeof(a),其中a为整数,将返回4。 |
& | 返回变量的地址。 | &a; 返回变量的实际地址。 |
* | 指向变量的指针。 | *a; |
? : | 条件表达式。 | If Condition is true ? then value X : otherwise value Y |
请尝试以下示例,以了解C中可用的所有其他运算符-
#include <stdio.h> main() { int a = 4; short b; double c; int* ptr; /* sizeof 运算符的示例 */ printf("Line 1 - Size of variable a=%d\n", sizeof(a) ); printf("Line 2 - Size of variable b=%d\n", sizeof(b) ); printf("Line 3 - Size of variable c= %d\n", sizeof(c) ); /* & 和 * 运算符的示例 */ ptr = &a; /* “ptr”现在包含“a”的地址 */ printf("value of a is %d\n", a); printf("*ptr is %d.\n", *ptr); /* 三元运算符的例子 */ a = 10; b = (a == 1) ? 20: 30; printf( "Value of b is %d\n", b ); b = (a == 10) ? 20: 30; printf( "Value of b is %d\n", b ); }
当您编译并执行上述程序时,它将产生以下结果-
Line 1 - Size of variable a=4 Line 2 - Size of variable b=2 Line 3 - Size of variable c= 8 value of a is 4 *ptr is 4. Value of b is 30 Value of b is 20