C 语言中的算术运算符
C 语言中的算术运算符是一些预定义用于执行算术运算的特殊符号。我们熟悉基本的算术运算——加法、减法、乘法和除法。 C 语言是一种计算语言,因此这些运算符对于执行计算机化过程至关重要。
除了上述分别分配给四个符号 +、−、* 和 / 的运算之外,C 语言还有另一个算术运算符,称为 模运算符,我们使用 % 符号来表示它。
下表列出了 C 语言中的算术运算符 −
| 运算符 | 描述 |
|---|---|
| + | 将两个操作数相加。 |
| 从第一个操作数中减去第二个操作数。 | |
| * | 将两个操作数相乘。 |
| / | 将分子除以分母。 |
| % | 模运算符,用于计算整数除法后的余数。 |
| ++ | 递增运算符将整数值加一。 |
| -- | 减法运算符将整数值减一。 |
上表还列出了 ++ 和 -- 运算符。我们将在单独的章节中学习自增和自减运算符。
示例:C 语言中的算术运算符
以下示例演示了如何在 C 程序中使用这些算术运算符 -
#include <stdio.h>
int main(){
int op1 = 10;
int op2 = 3;
printf("Operand1: %d Operand2: %d
", op1, op2);
printf("Addition of op1 and op2: %d
", op1 + op2);
printf("Subtraction of op2 from op1: %d
", op1 - op2);
printf("Multiplication of op1 and op2: %d
", op1 * op2);
printf("Division of op1 by op2: %d
", op1/op2);
return 0;
}
输出
运行此代码时,将产生以下输出 -
Operand1: 10 Operand2: 3 Addition of op1 and op2: 13 Subtraction of op2 from op1: 7 Multiplication of op1 and op2: 30 Division of op1 by op2: 3
C 语言中的类型转换
前三个结果符合预期,但除法的结果却不符合预期。您预期 10/3 会是小数 (3.333333)。这是因为我们使用了 %d 格式说明符来打印除法结果吗?如果我们将代码的最后一行修改如下:
printf("Division of op1 by op2: %f
", op1/op2);
现在除法运算的结果将为"0.000000",这更令人惊讶。 C 语言之所以如此,是因为一个整数与另一个整数相除总是返回一个整数。
要进行浮点除法,至少有一个操作数必须是浮点数,或者需要使用类型转换运算符将其中一个整数操作数转换为浮点数。
现在,将给定程序的最后一个 printf 语句修改如下:
printf("Division of op1 by op2: %f
", (float)op1/op2);
修改后再次运行代码,将显示正确的除法 -
Division of op1 by op2: 3.333333
注意:如果对浮点表达式使用 %d 格式说明符,结果将始终为"0"。
示例
至少包含一个浮点数(或双精度数)的算术运算的结果始终为浮点数。请看以下示例 -
#include <stdio.h>
int main(){
int op1 = 10;
float op2 = 2.5;
printf("Operand1: %d Operand2: %f
", op1, op2);
printf("Addition of op1 and op2: %f
", op1 + op2);
printf("Subtraction of op2 from op1: %f
", op1 - op2);
printf("Multiplication of op1 and op2: %f
", op1 * op2);
printf("Division of op1 by op2: %f
", op1/op2);
return 0;
}
输出
运行代码并检查其输出 −
Operand1: 10 Operand2: 2.500000 Addition of op1 and op2: 12.500000 Subtraction of op2 from op1: 7.500000 Multiplication of op1 and op2: 25.000000 Division of op1 by op2: 4.000000
char 数据类型的算术运算
在 C 语言中,char 数据类型是 int 类型的子集。因此,我们可以对 char 操作数进行算术运算。
示例
以下示例展示了如何使用两个操作数(其中一个为 char 类型)进行算术运算 -
#include <stdio.h>
int main(){
char op1 = 'F';
int op2 = 3;
printf("operand1: %c operand2: %d
", op1, op2);
printf("Addition of op1 and op2: %d
", op1 + op2);
printf("Subtraction of op2 from op1: %d
", op1 - op2);
printf("Multiplication of op1 and op2: %d
", op1 * op2);
printf("Division of op1 by op2: %d
", op1/op2);
return 0;
}
输出
运行代码并检查其输出 −
operand1: F operand2: 3 Addition of op1 and op2: 73 Subtraction of op2 from op1: 67 Multiplication of op1 and op2: 210 Division of op1 by op2: 23
由于 char 数据类型是 int 的子集,%c 格式说明符返回与 %d 说明符返回的整数相关联的 ASCII 字符。
如果两个 char 操作数之间的任何算术运算导致整数超出 char 的范围,则 %c 说明符将显示空白。
C 语言中的模运算符
模运算符 (%) 返回除法运算的余数。
示例
请看以下示例 -
#include <stdio.h>
int main(){
int op1 = 10;
int op2 = 3;
printf("Operand1: %d Operand2: %d
", op1, op2);
printf("Modulo of op1 and op2: %d
", op1%op2);
return 0;
}
输出
运行代码并检查其输出 −
Operand1: 10 Operand2: 3 Modulo of op1 and op2: 1
取模运算符需要两个操作数均为 int 类型。如果不是,编译器会报错 类型不匹配错误。例如,将上述代码中"op1"的数据类型更改为 float,然后重新运行程序 -
float op1 = 10;
int op2 = 3;
printf("对 op1 和 op2 求模:%d
", op1%op2);
现在,您将收到类型不匹配错误,并显示以下消息 -
error: invalid operands to binary % (have 'float' and 'int')
但它允许使用字符型操作数进行模运算。
C 语言中的取反运算符
符号 ++ 和 -- 表示的自增运算符和自减运算符是一元运算符。它们已在单独的章节中介绍。表示减法运算符的"−"符号也充当一元取反运算符。
示例
以下示例重点介绍了如何在 C 语言中使用取反运算符 -
#include <stdio.h>
int main(){
int op1 = 5;
int op2 = -op1;
printf("Operand1: %d Operand2: %d
", op1, op2);
return 0;
}
输出
运行此代码时,将产生以下输出 -
Operand1: 5 Operand2: -5
在上面的例子中,""符号返回op1的负值并将其赋给op2。

c_operators.html