为什么 printf(“%d“, 5/2) 输出 2 不是 2.5?C语言整数除法陷阱

发布时间:2026/7/18 3:12:53

为什么 printf(“%d“, 5/2) 输出 2 不是 2.5?C语言整数除法陷阱
为什么 printf(“%d”, 5/2) 输出 2 不是 2.5C语言的整数除法陷阱你有没有遇到过这种情况#includestdio.hintmain(){printf(%d\n,5/2);// 输出 2不是 2.5printf(%d\n,10/3);// 输出 3不是 3.333...printf(%d\n,1/2);// 输出 0return0;}很多人刚开始学 C 语言看到1 / 2 0整个人都懵了——哪怕是小学数学也知道一除以二等于零点五啊。但这个结果不是 bug是 C 语言设计者有意为之的「整数除法」。今天 3 分钟彻底搞懂。一句话结论整数 / 整数 整数小数部分直接被丢弃C 语言里两个整数相除结果一定是整数。计算过程是5 / 2 2.5 → 去掉小数 → 2 10 / 3 3.333... → 去掉小数 → 3 1 / 2 0.5 → 去掉小数 → 0不是四舍五入是直接截断truncation一刀切掉小数部分。画个图就清楚了5 / 2 的计算过程 ┌───┬───┬───┬───┬───┐ │ 1 │ 2 │ 3 │ 4 │ 5 │ 5 个苹果 └───┴───┴───┴───┴───┘ 每 2 个一组 ┌───┬───┐ ┌───┬───┐ ┌───┐ │ 1 │ 2 │ │ 3 │ 4 │ │ 5 │ ← 剩下的 1 个不够一组 └───┴───┘ └───┴───┘ └───┘ 第1组 第2组 被丢弃 结果 2组数不是 2.5那我想得到 2.5 怎么办// 方法一把其中一个操作数变成浮点数printf(%f\n,5.0/2);// 2.500000printf(%f\n,5/2.0);// 2.500000// 方法二强制类型转换printf(%f\n,(double)5/2);// 2.500000// 方法三两个都转printf(%f\n,5.0/2.0);// 2.500000只要除法表达式里有一个是浮点数C 语言就会自动做浮点除法。这个坑不止在输出时doubleresult5/2;// result 2.0不是 2.5printf(%f\n,result);// 输出 2.000000为什么因为5 / 2先算整数除法得 2然后才把 2 转成 double 赋值。转换发生在除法之后太迟了。正确写法doubleresult5.0/2;// result 2.5// 或者doubleresult(double)5/2;// result 2.5一张表记住表达式结果原因5 / 22整数除法截断5.0 / 22.5浮点除法5 / 2.02.5浮点除法5.0 / 2.02.5浮点除法1 / 20最容易踩的坑(double)5 / 22.5显式类型转换double x 5/22.0先整除再赋值来不及记住一句话C 语言里两个整数相除小数部分会被直接丢弃不是四舍五入。想要小数结果至少让一个操作数变成浮点数。理解了这条规则你也就明白了为什么1 / 2等于 0——不是数学错了是类型决定了计算方式。你还被哪些反直觉的 C 语言结果坑过评论区聊聊。#c语言 #算法 #数据结构

相关新闻

ClaudeAgent】并发-后台任务

ClaudeAgent】并发-后台任务

2026/7/9 22:34:33

Java实现代码javapublic class BackgroundTasksSystem {// --- 配置 ---private static final Path WORKDIR Paths.get(System.getProperty("user.dir"));private static final Gson gson new GsonBuilder().setPrettyPrinting().create();// --- 后台任务管理器 -…

为什么不要做万能产品

为什么不要做万能产品

2026/7/10 20:42:59

很多产品一开始都有一个危险冲动:能不能做成万能工具?既能写文案,又能做图,又能分析数据,还能管理项目、生成报告、自动发布、团队协作。听起来市场更大,用户更多,机会更多。 但早期产品最怕的…

FastCAE Agent 与 Skill 体系应用 | 面向主流AI编程工具的配置·使用·成效指南

FastCAE Agent 与 Skill 体系应用 | 面向主流AI编程工具的配置·使用·成效指南

2026/7/8 7:03:57

一 为什么需要 Agent 与 Skill?在工业软件开发中,CAE(计算机辅助工程)领域代码量庞大、架构分层复杂、规范约束严格。传统 AI 编程助手面对此类项目时,往往只能给出泛化建议,无法深入理解项目的目录结构、命…

硬件工程师成长指南:原理理解与动手调试的平衡艺术

硬件工程师成长指南:原理理解与动手调试的平衡艺术

2026/7/18 3:12:13

做硬件开发,到底是原理理解更重要,还是动手调试能力更关键?这个问题困扰着很多刚入行的工程师。今天我们就来深入探讨这个经典话题,从实际项目经验出发,分析两者的关系和在职业发展中的权重。从实际项目经验来看&#…

AI编程智能体深度评测:Vibe、Claude Code、Cursor、Codex选型指南

AI编程智能体深度评测:Vibe、Claude Code、Cursor、Codex选型指南

2026/7/18 3:12:13

在AI编程工具快速发展的今天,开发者们面临着一个幸福的烦恼:面对众多优秀的AI编程智能体,如何选择最适合自己工作流的工具?Vibe、Claude Code、Cursor和Codex这四款工具各有特色,但要在真实项目中发挥最大价值&#xf…

C#与VC++ DLL交互的类型映射与内存管理实战

C#与VC++ DLL交互的类型映射与内存管理实战

2026/7/18 3:12:13

1. 项目概述:C#与VC DLL交互的核心挑战在混合编程领域,C#调用VC编写的DLL是典型的跨语言协作场景。我处理过数十个此类项目,最常遇到的"拦路虎"就是参数类型系统的差异。.NET的CLR类型系统与原生C的数据表示存在根本性区别&#xf…

DeepLearningAI 深度学习 2025 笔记(五)

DeepLearningAI 深度学习 2025 笔记(五)

2026/7/18 3:12:13

https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-dl-25/img/04f1c5f0d146fcb22fbce9aea7af5827_24.png https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/dlai-dl-25/img/04f1c5f0d146fcb22fbce9aea7af5827_26.png 这个生成器会输出一…

C++内存管理:从基础到高阶的系统性实现指南

C++内存管理:从基础到高阶的系统性实现指南

2026/7/18 3:12:13

1. 项目概述:为什么C内存管理是每个开发者的必修课如果你写过C,大概率经历过“段错误”(Segmentation Fault)或者“内存泄漏”(Memory Leak)带来的深夜调试。这几乎是每个C开发者成长路上的必经之“坑”。这…

开源通用网络爬虫框架设计与实战技巧

开源通用网络爬虫框架设计与实战技巧

2026/7/18 3:02:12

1. 开源通用网络爬虫框架概述在数据驱动的时代,网络爬虫已成为获取互联网信息的核心技术手段。作为一个从业多年的数据工程师,我亲历了从零散脚本到成熟框架的演进过程。开源通用网络爬虫框架的出现,彻底改变了我们采集网络数据的方式。这类框…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/17 10:50:47

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/17 17:34:09

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/16 14:18:17

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

2026/7/18 0:02:02

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

2026/7/18 0:02:02

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

某智驾大牛创业

某智驾大牛创业

2026/7/18 0:02:02

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…