C语言算术运算符 #
一、算术运算符概述 #
1.1 基本算术运算符 #
| 运算符 | 名称 | 示例 | 结果 |
|---|---|---|---|
| + | 加法 | 5 + 3 | 8 |
| - | 减法 | 5 - 3 | 2 |
| * | 乘法 | 5 * 3 | 15 |
| / | 除法 | 5 / 3 | 1 |
| % | 取余 | 5 % 3 | 2 |
1.2 自增自减运算符 #
| 运算符 | 名称 | 示例 | 说明 |
|---|---|---|---|
| ++ | 自增 | a++ 或 ++a | 变量值加1 |
| – | 自减 | a-- 或 --a | 变量值减1 |
二、基本算术运算 #
2.1 加减乘除 #
c
#include <stdio.h>
int main() {
int a = 10, b = 3;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b);
return 0;
}
输出:
text
a + b = 13
a - b = 7
a * b = 30
a / b = 3
2.2 整数除法 #
整数除法结果为整数,舍去小数部分:
c
#include <stdio.h>
int main() {
printf("5 / 2 = %d\n", 5 / 2);
printf("-5 / 2 = %d\n", -5 / 2);
printf("5 / -2 = %d\n", 5 / -2);
return 0;
}
2.3 浮点除法 #
c
#include <stdio.h>
int main() {
printf("5 / 2 = %d\n", 5 / 2);
printf("5.0 / 2 = %f\n", 5.0 / 2);
printf("5 / 2.0 = %f\n", 5 / 2.0);
printf("5.0 / 2.0 = %f\n", 5.0 / 2.0);
return 0;
}
2.4 取余运算 #
取余运算符 % 只能用于整数:
c
#include <stdio.h>
int main() {
printf("10 %% 3 = %d\n", 10 % 3);
printf("10 %% -3 = %d\n", 10 % -3);
printf("-10 %% 3 = %d\n", -10 % 3);
printf("-10 %% -3 = %d\n", -10 % -3);
return 0;
}
输出:
text
10 % 3 = 1
10 % -3 = 1
-10 % 3 = -1
-10 % -3 = -1
结果符号与被除数相同。
2.5 取余应用 #
判断奇偶:
c
if (n % 2 == 0) {
printf("偶数\n");
} else {
printf("奇数\n");
}
提取各位数字:
c
#include <stdio.h>
int main() {
int num = 12345;
printf("个位: %d\n", num % 10);
printf("十位: %d\n", (num / 10) % 10);
printf("百位: %d\n", (num / 100) % 10);
return 0;
}
循环计数:
c
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
if (i % 3 == 0) {
printf("i = %d\n", i);
}
}
return 0;
}
三、自增自减运算符 #
3.1 前置与后置 #
c
#include <stdio.h>
int main() {
int a = 5;
printf("a = %d\n", a);
printf("a++ = %d\n", a++);
printf("a = %d\n", a);
int b = 5;
printf("\nb = %d\n", b);
printf("++b = %d\n", ++b);
printf("b = %d\n", b);
return 0;
}
输出:
text
a = 5
a++ = 5
a = 6
b = 5
++b = 6
b = 6
区别:
| 表达式 | 返回值 | 执行后变量值 |
|---|---|---|
| a++ | 原值 | a + 1 |
| ++a | a + 1 | a + 1 |
| a– | 原值 | a - 1 |
| –a | a - 1 | a - 1 |
3.2 使用场景 #
循环中:
c
for (int i = 0; i < 10; i++) {
printf("%d ", i);
}
指针遍历:
c
int arr[] = {1, 2, 3, 4, 5};
int* p = arr;
printf("%d ", *p++);
printf("%d ", *p++);
3.3 注意事项 #
不要在同一表达式中多次使用:
c
int a = 5;
int b = a++ + ++a;
这是未定义行为,不同编译器结果不同。
四、运算符优先级 #
4.1 算术运算符优先级 #
text
高 ++ -- (后置)
++ -- (前置)
* / %
低 + -
4.2 示例 #
c
#include <stdio.h>
int main() {
int a = 2, b = 3, c = 4;
printf("a + b * c = %d\n", a + b * c);
printf("(a + b) * c = %d\n", (a + b) * c);
printf("a * b + c = %d\n", a * b + c);
printf("a * (b + c) = %d\n", a * (b + c));
return 0;
}
输出:
text
a + b * c = 14
(a + b) * c = 20
a * b + c = 10
a * (b + c) = 14
五、类型转换 #
5.1 自动类型转换 #
c
#include <stdio.h>
int main() {
int a = 5;
float b = 2.0;
printf("int / int = %d\n", 5 / 2);
printf("int / float = %f\n", a / b);
printf("float / int = %f\n", b / a);
return 0;
}
5.2 强制类型转换 #
c
#include <stdio.h>
int main() {
int a = 5, b = 2;
printf("5 / 2 = %d\n", a / b);
printf("(float)5 / 2 = %f\n", (float)a / b);
printf("5 / (float)2 = %f\n", a / (float)b);
return 0;
}
六、常见错误 #
6.1 整数除法精度丢失 #
c
float result = 5 / 2;
printf("%f\n", result);
输出 2.000000,因为先进行整数除法。
修正:
c
float result = 5.0f / 2;
6.2 除以零 #
c
int a = 10 / 0;
运行时错误。
6.3 取余运算符误用 #
c
float a = 5.5 % 2.5;
编译错误,% 只能用于整数。
七、总结 #
算术运算符 #
| 运算符 | 说明 | 示例 |
|---|---|---|
| + | 加法 | a + b |
| - | 减法 | a - b |
| * | 乘法 | a * b |
| / | 除法 | a / b |
| % | 取余 | a % b |
自增自减 #
| 运算符 | 说明 |
|---|---|
| a++ | 先用后加 |
| ++a | 先加后用 |
| a– | 先用后减 |
| –a | 先减后用 |
注意事项 #
- 整数除法舍去小数
- 取余只能用于整数
- 注意类型转换
- 避免除以零
下一步,让我们学习关系运算符!
最后更新:2026-03-26