尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

5/2为什么等于2?C语言整数除法

5/2为什么等于2?C语言整数除法 你有没有遇到过这种情况#include int main() { printf(%d\n, 5 / 2); // 输出 2不是 2.5 printf(%d\n, 10 / 3); // 输出 3不是 3.333... printf(%d\n, 1 / 2); // 输出 0 return 0; }很多人刚开始学C语言看到 1/20 整个人都懵了。但这不是bug是C语言设计者有意为之的「整数除法」。一句话结论整数/整数整数小数直接被丢弃不是四舍五入是直接截断。5/22.5→去掉小数→2。那我想得到2.5怎么办printf(%f\n, 5.0 / 2); // 2.500000 printf(%f\n, (double)5 / 2); // 2.500000只要除法里有一个浮点数C语言就会自动做浮点除法。这个坑不止在输出时double result 5 / 2; // result 2.0不是2.5因为5/2先算整除得2然后才转成double。转换在除法之后太迟了。正确double result 5.0 / 2;一张表记住5/22整数截断| 5.0/22.5浮点| 1/20最容易踩的坑| (double)5/22.5显式转换C语言里两个整数相除小数部分会被直接丢弃。想要小数结果至少让一个操作数变成浮点数。你还被哪些反直觉的C语言结果坑过评论区聊聊。
返回列表