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

C语言自主实现round函数返回负数时输出251问题求助

问题排查结论
  1. 你看到的251不是取整函数逻辑错误,是Linux系统进程退出码的特性导致的:
    POSIX标准明确规定进程退出码的取值范围是0~255的无符号整数,main函数返回的int值只会取低8位返回给父进程。你代码中my_round(-5.2)的计算结果是-5,有符号整数-5的8位补码对应无符号值就是251,因此echo $?得到251属于正常现象,和函数逻辑无关。
    你可以直接写最简测试验证:
int main(void) { return -5; }

编译运行后查询退出码,同样会得到251。
2. 如果你要验证取整函数的正确性,不要用main返回值传递结果,可选两种验证方式:

  • 临时引入stdio.h头文件调用printf打印结果(测试完成后删除相关代码即可符合作业要求),你会看到my_round(-5.2)的输出为预期的-5;
  • 使用gdb调试工具打断点查看my_round的返回值,同样能得到正确的负数结果。
  1. 你的round取整逻辑本身是符合要求的:
    正数加0.5后截断、负数减0.5后截断的逻辑,刚好匹配四舍五入、中间值向远离0方向取整的规则,正数场景测试通过,负数场景计算结果本身也没有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:09:02