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

相关推荐
中国搜索直付通12 分钟前
避开直付通选型暗礁:二级商户的合规生存与背景甄别
java·大数据·开发语言·人工智能·游戏
Hesionberger29 分钟前
LeetCode406:重建身高队列精髓解析
开发语言·数据结构·python·算法·leetcode
kdxiaojie39 分钟前
Linux 驱动研究 —— V4L2 (3)
linux·运维·笔记·学习
Qimooidea1 小时前
祁木 CAD Translator 深度评测:从参数解析到工程交付实战
java·开发语言·人工智能·机器翻译
小白学大数据1 小时前
企业内网场景下 Python 自定义 CA 证书信任链的正确配置方法
开发语言·网络·python·信任链
不要葱花1 小时前
接下来我将复现 10 篇强化学习算法:第 3 篇,一杯喜茶,搞定 Search-R1
算法·面试
Java面试题总结1 小时前
使用 Python 在 Excel 中添加和自定义文本框
开发语言·python·excel
Amazing_Cacao1 小时前
CFCA精品可可饮品中级参数推演:突破液态表达的混沌,实现萃取微观结构的绝对物理可控
笔记
十月的皮皮1 小时前
C语言学习笔记20260717-预处理机制
c语言·笔记·学习