我正在做老师给我的C作业,在ubuntu环境下使用GCC。我们必须重新创造一种"圆形"。从"数学"开始。头,但不使用任何函数或头,也不检查该函数的工作情况。我创建了一个代码,让我可以对正的值这样做,它工作得很好。我对负值使用了相同的逻辑,但是当我要求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)。如果有人能帮我一把,我真的很感激,谢谢!Bloster
您的问题是关于返回代码返回码在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("%dn", res);
printf("%un", ((unsigned int)res)&0Xff);
return res;
}