C语言学习笔记 - 44.运算符和表达式 - 运算符2 - 除法与取余运算符

一、除法运算符(/

除法是C语言算术运算符中与数学运算差异最大的运算符之一,其运算结果严格依赖于操作数的数据类型,是初学者最易出错的知识点。

1. 核心运算规则

  • 整数除法 :当被除数和除数均为整数类型 时,运算结果为整数 ,直接舍弃小数部分(向零取整),而非四舍五入。

  • 浮点除法 :当被除数或除数中至少有一个为浮点型float/double)时,运算结果为浮点型,保留完整小数部分。

2. 关键特性(结合谭浩强《C程序设计(第五版)》补充)

  • 负数整数除法的舍入方向:多数C编译系统(如VS、GCC)采用向零取整原则,即结果向数值0的方向靠拢。例如:

    • 5 / 3 = 1(舍弃0.666...)。

    • -5 / 3 = -1(舍弃-0.666...,向零取整为-1,而非-2)。

  • 浮点除法的精度:float型结果保留约6位有效数字,double型保留约15位有效数字。

3. 代码示例与解析

复制代码
#include <stdio.h>

int main() {
    // 整数除法示例
    printf("=== 整数除法 ===\n");
    printf("16 / 5 = %d\n", 16 / 5);    // 输出3,舍弃0.2
    printf("5 / 16 = %d\n", 5 / 16);    // 输出0,舍弃0.3125
    printf("-16 / 5 = %d\n", -16 / 5);  // 输出-3,向零取整
    printf("16 / -5 = %d\n", 16 / -5);  // 输出-3
    printf("-16 / -5 = %d\n", -16 / -5);// 输出3

    // 浮点除法示例
    printf("\n=== 浮点除法 ===\n");
    printf("16.0 / 5 = %f\n", 16.0 / 5);    // 输出3.200000,double型结果
    printf("16 / 5.0 = %f\n", 16 / 5.0);    // 输出3.200000
    printf("16.0 / 5.0 = %f\n", 16.0 / 5.0);// 输出3.200000
    printf("5.0 / 16 = %.4f\n", 5.0 / 16);  // 输出0.3125,保留4位小数

    return 0;
}

二、取余(取模)运算符(%

取余运算符用于计算两个整数相除后的余数,其使用频率低于除法,但规则特殊,需重点掌握。

1. 核心运算规则

  • 操作数要求 :两个操作数必须均为整数类型int/short/long等),若出现浮点型操作数会直接编译报错。

  • 结果定义a % b的结果等于 a - (a / b) * b,其中 a / b遵循整数除法的向零取整规则。

  • 符号规则 :取余结果的符号始终与被除数一致,与除数的符号无关。

2. 关键特性

  • 当被除数的绝对值小于除数 时,取余结果等于被除数本身。例如:3 % 5 = 3-3 % 5 = -3

  • 当被除数能被除数整除时,取余结果为0。例如:6 % 3 = 0-9 % 3 = 0

3. 代码示例与解析

复制代码
#include <stdio.h>

int main() {
    printf("=== 取余运算符示例 ===\n");
    // 正数取余
    printf("13 %% 3 = %d\n", 13 % 3);    // 输出1,13 = 3 * 4 +1
    printf("3 %% 13 = %d\n", 3 % 13);    // 输出3,被除数小于除数
    printf("6 %% 3 = %d\n", 6 % 3);      // 输出0,整除

    // 含负数的取余(符号与被除数一致)
    printf("13 %% -3 = %d\n", 13 % -3);  // 输出1,被除数为正
    printf("-13 %% 3 = %d\n", -13 % 3);  // 输出-1,被除数为负
    printf("-13 %% -3 = %d\n", -13 % -3);// 输出-1,被除数为负
    printf("-3 %% 13 = %d\n", -3 % 13);  // 输出-3,被除数小于除数

    return 0;
}

注意 :在printf中输出百分号%时,需使用%%进行转义,否则会被识别为格式声明符。


三、核心易错点总结

  1. 整数除法的舍入陷阱 :不要将整数除法的结果误认为是四舍五入,例如7 / 2 = 3而非4-7 / 2 = -3而非-4

  2. 浮点除法的触发条件 :若需要保留小数结果,必须确保至少一个操作数为浮点型。例如计算1/3时,应写成1.0/31/3.0

  3. 取余运算符的类型限制 :严禁对浮点型数据使用%运算符,例如5.0 % 3会导致编译错误。

  4. 余数符号的判断:牢记余数符号与被除数一致,与除数无关,这是最易混淆的规则。

  5. 被除数小于除数的情况 :当|a| < |b|时,a % b = a,例如2 % 5 = 2-2 % 5 = -2

相关推荐
kkeeper~1 小时前
0基础C语言积跬步之动态内存管理
c语言·开发语言
橘右今1 小时前
2026 Java后端高频面试宝典
java·开发语言·面试
乐迪信息1 小时前
乐迪信息:AI算法盒子实时识别船舶烟雾与火焰异常
大数据·人工智能·算法·安全·目标跟踪
J-Tony111 小时前
【JVM】根可达算法
jvm·算法
艾iYYY1 小时前
string 类的模拟实现
android·服务器·c语言·c++·算法
微小冷2 小时前
Julia卫星工具箱SatelliteToolbox简介
开发语言·航天·坐标转换·julia·卫星工具箱
2601_colin2 小时前
Codex插件全流程实战指南
开发语言·经验分享·笔记·微信开放平台
Lsk_Smion2 小时前
力扣实训 _ [75].颜色分类 _ 杨辉三角
数据结构·算法·leetcode