Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想避免';浮点错误';在C程序中_C - Fatal编程技术网

我想避免';浮点错误';在C程序中

我想避免';浮点错误';在C程序中,c,C,我希望在这段代码中避免“浮点错误” 此代码的目的是获得“整数的平均值”,但“整数”的数量受用户输入的限制。请帮帮我 #include <stdio.h> int main(void) { int num=0; int limit; int result=0; printf("number of integer: "); scanf("&d", &limit); while(num<limit) {

我希望在这段代码中避免“浮点错误”

此代码的目的是获得“整数的平均值”,但“整数”的数量受用户输入的限制。请帮帮我

#include <stdio.h>

int main(void)
{
    int num=0;
    int limit;
    int result=0;

    printf("number of integer: ");
    scanf("&d", &limit);

    while(num<limit)
    {
        int output;
        printf("Input integer : ");
        scanf("%d", &output);
        result += output;
        num++;
    }
    printf("average of total integer: %d \n", result/limit);
    return 0;
}
#包括
内部主(空)
{
int num=0;
整数极限;
int结果=0;
printf(“整数的数目:”);
scanf(“&d”、&limit);

当(num除以2个整数时,结果也是一个整数

要返回浮点,需要将其中一个参数强制转换为浮点

所以你的最后一行变成了

printf("average of total integer: %f \n", result/(float)limit);

由于两个
整数的结果也是一个整数,因此

printf("average of total integer: %f \n", result/(float)limit);

当你输入cast变量
limit
到float时,发生的事情是
result
将被隐式转换为
float
,因此结果是
float

没有家庭作业,但我独自一人看书学习。这已经很好了。你不做任何浮点计算,所以不会有浮点错误。您得到的是什么“浮点错误”?或者您只是在猜测您可以得到一个?读取
limit
scanf
应该具有
%d
格式,而不是
“&d”
您希望从
scanf(&d“,&limit)中得到什么
?哦,将一个int除以一个int,得到一个int。不是浮点。将
结果
限制
声明为
浮点
双倍
另一个答案比你的答案早9分钟,你的答案没有添加任何实质性的消息。@glglglglglgl我的互联网坏了。谢谢你的回答!=)奇怪的是,为什么您要转换为
float
而不是
double
?注意:商
result/(float)limit
在传递到
printf()之前会转换为
double
@chux你确定吗?结果的类型是较长参数的类型。因此,在本例中,它将是float。@Bartlomiej Lewandowski同意你的“it”,即商是
float
。但是“it”被传递到
printf(char*格式,…)
作为一个参数,它会经历默认参数提升,在本例中是:
float
被提升为
double
.C11§6.5.2.2 6这就是为什么如果将
float
double
传递给
printf()
它使用与
float
相同的格式说明符,它们被提升为
double
@chux谢谢,我在传递到printf时没有注意到这种提升。