gpt4 book ai didi

不能返回负值

转载 作者:行者123 更新时间:2023-12-04 19:27:43 25 4
gpt4 key购买 nike

我正在做老师给我的 C 作业,在带有 GCC 的 ubuntu 环境中使用它。
我们必须从“math.h”头文件中重新创建一种“round”,但不使用任何函数或头文件,也不通过检查这个函数的工作。我创建了一个代码,允许我为正值做这件事,它工作得很好。我对负值使用了相同的逻辑,但是当我要求我的 main 返回一个负值时,它总是返回一个“251”,这不是我要求的值。这是我的代码:
my_round.c

int my_round(float n)
{
if (n<0)
{
float res = n-0.5;
return res;
}
else
{
float res = n+0.5;
return res;
}
}
main_round.c
int my_round(float n);

int main(void)
{
return my_round(-5.2);
}
然后我以这种方式使用 gcc:
gcc main_round.c my_round.c -o round.out
然后我执行 ./round.out ,当“ 251 ”我要求“ echo $? ”时返回我。
但它确实适用于正值,我测试了所有值(如 1.1;1.2;等......一直到 1.9)。
如果有人愿意帮助我,我真的很感激,谢谢!
布洛斯特

最佳答案

您的问题是关于返回码
返回码在 0 到 255 之间无符号
打印值为-5返回值为251所以你的代码很好,你测试它的方式不好
此代码显示:

-5
251
#include <stdio.h>
#include <stdlib.h>

static int my_round(float n)
{
if (n<0)
{
float res = n-0.5;
return res;
}
else
{
float res = n+0.5;
return res;
}
}

int main(void)
{
int res = my_round(-5.2);
printf("%d\n", res);
printf("%u\n", ((unsigned int)res)&0Xff);
return res;
}

关于不能返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69582582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com