C语言 运算符
2019-09-09
22
0
C语言包含丰富的内置运算符,并提供以下类型的运算符-
- 算术运算符
- 关系运算符
- 逻辑运算符
- 按位运算符
- 赋值运算符
- Misc运算符
算术运算符
下表显示了C语言支持的所有算术运算符。假设变量 A =10,变量 B=20,然后-
Operator | 描述 | Example |
---|---|---|
+ | 相加 | 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,则-
Operator | 描述 | Example |
---|---|---|
== | 判断是否相等 | (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" );
}
/* Lets change value of a and 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,则-
Operator | 描述 | Example | ||||
---|---|---|---|---|---|---|
&& | 逻辑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" );
}
/* 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" );
}
}
当您编译并执行上述程序时,它将产生以下结果:
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,然后-
Operator | 描述 | Example |
---|---|---|
& | 按位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语言支持的赋值运算符-
Operator | 描述 | Example |
---|---|---|
= | 赋值运算符 | C=A + B |
+= | 先加再赋值。 | C += A等价于 C=C + A |
-= | 先减后赋值 | C -= A 等价于 C=C - A |
*= | 先乘后赋值 | C *= A 等价于 C=C * A |
/= | 先除后赋值 | C /= A 等价于 C=C/A |
%= | 取模后赋值 | C %= A 等价于 C=C % A |
<<= | 左移后赋值 | C <<= 2 等价于 C=C << 2 |
>>= | 右移后赋值 | C >>= 2 is 等价于 C=C >> 2 |
&= | 按位与赋值运算符 | C &= 2 等价于 C=C & 2 |
^= | 按位非赋值运算符 | C ^= 2 等价于 as C=C ^ 2 |
|= | 按位或(OR)和赋值运算符。 | C |= 2 等价于 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; |
? : | 条件表达式。 | ?x:y; 如果条件为真,值为x,否则为y. |
请尝试以下示例,以了解C中可用的所有其他运算符:
#include <stdio.h>
main() {
int a = 4;
short b;
double c;
int* ptr;
/* example of sizeof operator */
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) );
/* example of & and * operators */
ptr = &a; /* 'ptr' now contains the address of 'a'*/
printf("value of a is %d\n", a);
printf("*ptr is %d.\n", *ptr);
/* example of ternary operator */
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