【问题标题】:Type Casting in C resulting in zero在 C 中类型转换导致零
【发布时间】:2021-12-15 01:40:12
【问题描述】:

我有一个简单的 C 程序,我在其中键入将两个整数转换为浮点数,然后计算它们的除法。但是,类型转换导致零。非常感谢您的帮助。

'''

#include <stdlib.h>
#include <string.h>
#include<ctype.h>

float mean(float sum,float N); 
int main()
{
    int sum = 6;
    int N = 3;
    printf("\nsum: %d\nN: %d",sum,N);
    float m = mean((float)sum,(float)N);
    printf("\nMean: %d",m);
}
return 0;
}

float mean(float sum,float N){
    float m = sum / N;
    return m;
}

这是输出:

【问题讨论】:

  • 请阅读有关格式字符串的文档,尤其是在使用 %d 时
  • printf("\nMean: %d",m); --> printf("\nMean: %f\n",m);
  • 应该有关于为转换说明符提供的参数不匹配的警告。如果你没有得到这个,你应该提高你的编译器诊断级别。如果有警告,请不要忽略它。

标签: c casting type-conversion average division


【解决方案1】:

% 后面的转换代码表示要显示的变量的类型。 您正在尝试使用 int 转换器显示浮点数。

%f float 或 double --> 有符号浮点 在 %d 或 %i 的 printf 函数中使用 %f --> 单十进制整数

【讨论】:

    【解决方案2】:
    #include <stdlib.h>
    #include <string.h>
    #include<ctype.h>
    
    float mean(float sum,float N); 
    int main()
    {
        int sum = 6;
        int N = 3;
        printf("\nsum: %d\nN: %d",sum,N);
        float m = mean((float)sum,(float)N);
        printf("\nMean: %f",m);
    }
    return 0;
    }
    
    float mean(float sum,float N){
        float m = sum / N;
        return m;
    }
    

    %d 打印以 10 为底的整数, %f 打印浮点值。所以,例如,如果我使用了

    printf( "%d, %f\n", 9, 9.8 );
    

    输出将是9, 9.800000。如果你给 printf 5.5 但使用 %d 我认为任何事情都可能发生。

    【讨论】:

      猜你喜欢
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2013-05-14
      • 1970-01-01
      • 2012-01-04
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多