C 语言运算符
本文介绍了 C 语言编程中的不同运算符。
运算符是对值或变量进行操作的符号,例如:+ 是执行加法的运算符。
C 语言中内置了大量的运算符来执行各种操作。
算术运算符
算术运算符对数值(常量和变量)执行数学运算,例如加法、减法、乘法、除法等。
运算符 | 运算符的含义 |
---|---|
+ |
加法或表示整数 |
- |
减法或表示负数 |
* |
乘法 |
/ |
分配 |
% |
除法后的余数(模除法) |
示例 1:算术运算符
#include <stdio.h>
int main()
{
int a = 9,b = 4, c;
c = a+b;
printf("a+b = %d \n",c);
c = a-b;
printf("a-b = %d \n",c);
c = a*b;
printf("a*b = %d \n",c);
c = a/b;
printf("a/b = %d \n",c);
c = a%b;
printf("Remainder when a divided by b = %d \n",c);
return 0;
}
输出
a+b = 13
a-b = 5
a*b = 36
a/b = 2
Remainder when a divided by b=1
运算符 +
, -
和 *
分别计算加法、减法和乘法。
在正常计算中, 9/4 = 2.25
,但是,在程序中输出 2
。这是因为两个变量 a
和 b
是整数,因此输出也是一个整数。编译器忽略小数点后的项并显示结果为 2
。
模运算符 %
计算余数。当 a=9
被 b=4
相除,余数是 1
。%
运算符只能与整数一起使用。
假设 a = 5.0
, b = 2.0
, c = 5
和 d = 2
。然后在 C 语言编程中的计算结果如下:
// 两个操作数是浮点数
a/b = 2.5
a/d = 2.5
c/b = 2.5
// 两个操作数都是整数
c/d = 2
自增和自减运算符
C 语言编程有两个运算符递增 ++
和递减 --
。
递增 ++
将变量的值增加 1,而递减 --
将变量的值减少 1。这两个运算符是一元运算符,只能操作单个操作数。
示例 2:递增和递减运算符
// Working of increment and decrement operators
#include <stdio.h>
int main()
{
int a = 10, b = 100;
float c = 10.5, d = 100.5;
printf("++a = %d \n", ++a);
printf("--b = %d \n", --b);
printf("++c = %f \n", ++c);
printf("--d = %f \n", --d);
return 0;
}
输出
++a = 11
--b = 99
++c = 11.500000
--d = 99.500000
在这里,运算符 ++
和 --
用作前缀。这两个运算符也可以像 a++
和 a--
这样用作后缀。
赋值运算符
赋值运算符用于为变量赋值。最常见的赋值运算符是 =
运算符 | 例子 | 结果 |
---|---|---|
= |
a = b |
a = b |
+= |
a += b |
a = a+b |
-= |
a -= b |
a = a-b |
*= |
a *= b |
a = a*b |
/= |
a /= b |
a = a/b |
%= |
a %= b |
a = a%b |
示例 3:赋值运算符
#include <stdio.h>
int main()
{
int a = 5, c;
c = a; // c is 5
printf("c = %d\n", c);
c += a; // c is 10
printf("c = %d\n", c);
c -= a; // c is 5
printf("c = %d\n", c);
c *= a; // c is 25
printf("c = %d\n", c);
c /= a; // c is 5
printf("c = %d\n", c);
c %= a; // c = 0
printf("c = %d\n", c);
return 0;
}
输出
c = 5
c = 10
c = 5
c = 25
c = 5
c = 0
关系运算符
关系运算符比较两个操作数之间的关系。如果比较结果为真,则返回 1;如果比较结果为假,则返回值 0。
关系运算符常用于 if else 语句和循环。
运算符 | 运算符的含义 | 例子 |
---|---|---|
== | 等于 | 5 == 3 被评估为 0 |
> | 比…更棒 | 5 > 3 被评估为 1 |
< | 少于 | 5 < 3 被评估为 0 |
!= | 不等于 | 5 != 3 被评估为 1 |
>= | 大于或等于 | 5 >= 3 被评估为 1 |
<= | 小于或等于 | 5 <= 3 被评估为 0 |
示例 4:关系运算符
#include <stdio.h>
int main()
{
int a = 5, b = 5, c = 10;
printf("%d == %d is %d \n", a, b, a == b);
printf("%d == %d is %d \n", a, c, a == c);
printf("%d > %d is %d \n", a, b, a > b);
printf("%d > %d is %d \n", a, c, a > c);
printf("%d < %d is %d \n", a, b, a < b);
printf("%d < %d is %d \n", a, c, a < c);
printf("%d != %d is %d \n", a, b, a != b);
printf("%d != %d is %d \n", a, c, a != c);
printf("%d >= %d is %d \n", a, b, a >= b);
printf("%d >= %d is %d \n", a, c, a >= c);
printf("%d <= %d is %d \n", a, b, a <= b);
printf("%d <= %d is %d \n", a, c, a <= c);
return 0;
}
输出
5 == 5 is 1
5 == 10 is 0
5 > 5 is 0
5 > 10 is 0
5 < 5 is 0
5 < 10 is 1
5 != 5 is 0
5 != 10 is 1
5 >= 5 is 1
5 >= 10 is 0
5 <= 5 is 1
5 <= 10 is 1
C 逻辑运算符
包含逻辑运算符的表达式返回 0
或 1
,具体取决于表达式的结果是真还是假。
运算符 | 意义 | 例子 |
---|---|---|
&& |
逻辑与。仅当所有操作数都为真时结果才为真。 | 如果 c = 5 且 d = 2 ,则表达式 ((c == 5) && (d > 5)) 等于 0。 |
|| |
逻辑或。当任一操作数为真时结果为真。 | 如果 c = 5 且 d = 2 ,则表达式 ((c == 5) || (d > 5)) 等于 1。 |
! | 逻辑非。当操作数为 0 时结果 1,否则结果为 0。 | 如果 c = 5 ,则表达式 !(c == 5) 等于 0。 |
示例 5:逻辑运算符
#include <stdio.h>
int main()
{
int a = 5, b = 5, c = 10, result;
result = (a == b) && (c > b);
printf("(a == b) && (c > b) is %d \n", result);
result = (a == b) && (c < b);
printf("(a == b) && (c < b) is %d \n", result);
result = (a == b) || (c < b);
printf("(a == b) || (c < b) is %d \n", result);
result = (a != b) || (c < b);
printf("(a != b) || (c < b) is %d \n", result);
result = !(a != b);
printf("!(a != b) is %d \n", result);
result = !(a == b);
printf("!(a == b) is %d \n", result);
return 0;
}
输出
(a == b) && (c > b) is 1
(a == b) && (c < b) is 0
(a == b) || (c < b) is 1
(a != b) || (c < b) is 0
!(a != b) is 1
!(a == b) is 0
逻辑运算符程序说明
(a == b) && (c > 5)
计算结果为1
,因为(a == b)
和(c > b)
都是1
(真)。(a == b) && (c < b)
计算结果为0
,因为(c < b)
为0
(假)。(a == b) || (c < b)
计算结果为1
,因为(a = b)
是1
(真)。(a != b) || (c < b)
计算结果为0
,因为(a != b)
和(c < b)
都是 ·(假)。!(a != b)
计算结果为1
,因为(a != b)
为0
(假)。因此,!(a != b)
是1
(真)。!(a == b)
计算结果为0
,因为(a == b)
是1
(真)。因此,!(a == b)
为0
(假)。
按位运算符
在计算过程中,诸如加、减、乘、除等数学运算被转换为位运算,这使得处理速度更快,效率更高。
位运算符在 C 语言编程中用于执行位运算。
运营商 | 运算符的含义 |
---|---|
& | 按位与 |
| |
按位或 |
^ | 按位异或 |
~ | 按位补码 |
« | 左移 |
» | 右移 |
访问C 语言中的按位运算符以了解更多信息。
其他运营商
逗号运算符
逗号运算符用于将相关表达式链接在一起。例如:
int a, c = 5, d;
sizeof 运算符
sizeof
是一元运算符,返回数据(常量,变量,数组,结构等)的大小。
示例 6:sizeof 运算符
#include <stdio.h>
int main()
{
int a;
float b;
double c;
char d;
printf("Size of int=%lu bytes\n",sizeof(a));
printf("Size of float=%lu bytes\n",sizeof(b));
printf("Size of double=%lu bytes\n",sizeof(c));
printf("Size of char=%lu byte\n",sizeof(d));
return 0;
}
输出
Size of int = 4 bytes
Size of float = 4 bytes
Size of double = 8 bytes
Size of char = 1 byte
其他运算符,如三元运算符 ?:
、引用运算符 &
、解引用运算符 *
和成员选择运算符 ->
将在后面的教程中讨论。