☰ 目录

C语言算术运算符详解

C语言提供了一系列算术运算符用于执行基本数学运算,包括加法、减法、乘法、除法、取模(求余数)等。以下是详细的分类和用法说明:


1. 基本算术运算符

运算符名称描述示例结果(整数)
+加法两数相加5 + 38
-减法左操作数减右操作数10 - 46
*乘法两数相乘3 * 412
/除法左操作数除以右操作数10 / 33(整数)
%取模返回除法的余数10 % 31

关键注意点

    整数除法:当两个操作数均为整数时,结果会截断小数部分(不四舍五入)。

7 / 2;   // 结果为3(不是3.5)

     浮点数除法:若任一操作数为浮点数,结果为浮点数。

7.0 / 2;  // 结果为3.5

    取模限制% 仅用于整数类型int, char等),浮点数不可用。

 

2. 自增与自减运算符

用于对变量进行加1或减1操作,分为前缀后缀两种形式:

运算符名称描述示例代码结果(a=5)
++a前缀自增先自增,后使用值b = ++a;a=6, b=6
a++后缀自增先使用值,后自增b = a++;a=6, b=5
--a前缀自减先自减,后使用值b = --a;a=4, b=4
a--后缀自减先使用值,后自减b = a--;a=4, b=5

注意:避免在复杂表达式中混合使用自增/自减(如 a = a++ + ++a;),行为未定义!


3. 复合赋值运算符

将算术运算与赋值结合,简化代码:

运算符等价形式示例(a=5)
+=a = a + ba += 3;a=8
-=a = a - ba -= 2;a=3
*=a = a * ba *= 4;a=20
/=a = a / ba /= 2;a=2
%=a = a % ba %= 3;a=2

4. 运算符优先级与结合性

优先级从高到低(同一行优先级相同):

运算符结合性示例
()(括号)从左到右(a + b) * c
++, --(后缀)从左到右a++, b--
++, --(前缀)从右到左++a, --b
*, /, %从左到右a * b / c % d
+, -从左到右a + b - c

示例解析

int result = 10 + 2 * 3;   // 先算乘法:2*3=6 → 10+6=16
int result2 = (10 + 2) * 3; // 括号优先:12*3=36

5. 常见陷阱与注意事项

  1. 整数除法截断

float x = 5 / 2;    // 错误!结果为2.0(整数除法)
float y = 5.0 / 2;  // 正确:2.5

    2.除数为零

  • 整数除法:5 / 0运行时崩溃(除零错误)。

  • 浮点数除法:5.0 / 0.0 → 结果为 inf(无穷大)。

    3.取模运算的限制

// int mod = 5.5 % 2;  // 错误!% 不能用于浮点数

    4.负数的取模结果:符号取决于编译器实现(C99规定结果符号与被除数一致)。

-10 % 3;   // 结果可能是 -1(多数编译器)
10 % -3;   // 结果为1

6. 综合示例

#include <stdio.h>

int main() {
    int a = 10, b = 3;
    float c = 10.0;

    // 基本运算
    printf("加法: %d\n", a + b);      // 13
    printf("减法: %d\n", a - b);      // 7
    printf("乘法: %d\n", a * b);      // 30
    printf("整数除法: %d\n", a / b);  // 3
    printf("浮点除法: %.2f\n", c / b); // 3.33
    printf("取模: %d\n", a % b);      // 1

    // 自增/自减
    int x = 5;
    printf("后缀自增: %d\n", x++);    // 输出5,x变为6
    printf("前缀自增: %d\n", ++x);    // 输出7,x变为7

    // 复合赋值
    x += 3; // x = x + 3 → 10
    printf("复合赋值: %d\n", x);
    
    return 0;
}

总结

  • 基础运算符:+, -, *, /, %(注意整数除法和取模限制)。

  • 自增/自减:前缀(先运算后使用)和后缀(先使用后运算)。

  • 复合赋值:简化代码(如 a += b)。

  • 优先级:括号 > 自增/自减 > 乘除取模 > 加减。

  • 避坑:整数除法截断、除零错误、取模仅限整数。

意见反馈

AI助手

代码编辑器