You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言函数返回int值乘(2/9)打印结果为0问题求解

问题根因

核心错误是整数除法的截断特性+类型转换位置错误:

  1. C语言中,当/运算符的左右两个操作数都是整数类型时,会执行整数除法,运算结果会直接向零截断为整数,不会保留小数部分。你代码里的2/9两个操作数都是int类型,编译阶段就会算出结果为0。
  2. 你的类型转换写法(float)(2/9)括号优先级最高,会先算完括号内的整数除法得到int类型的0,再把0转为float类型的0.0,无论后面乘的函数返回值是多少,0乘任何数结果都是0,最终打印自然始终为0。
修复方案

核心原则是:让除法运算在浮点类型下执行,不要先完成整数除法再做类型转换,两种常用正确写法:

  • 直接将除法的其中一个操作数写为浮点字面量,触发浮点运算:
// 2.0f是float类型字面量,9会自动提升为float参与运算,除法结果保留小数
printf("resultat est : %f", 2.0f / 9 * somme_diagonale(F));
  • 调整类型转换的位置,不要把整数除法表达式整体括起来强转,只强转其中一个操作数即可:
// 先把2转为float,再和int类型的9做除法,自动走浮点运算逻辑
printf("resultat est : %f", (float)2 / 9 * somme_diagonale(F));

你当前场景下somme_diagonale(F)返回值为165,修复后计算结果约为36.666668,符合预期。

内容的提问来源于stack exchange,提问作者ihab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:57:05