通过 scanf() 获取输入后将垃圾值作为输出的双数据类型

Posted

技术标签:

【中文标题】通过 scanf() 获取输入后将垃圾值作为输出的双数据类型【英文标题】:Double data type giving garbage value as output after taking input through scanf() 【发布时间】:2022-01-22 04:30:54 【问题描述】:
main()
   
    double B_Sal, DR_Al,H_RA, Total_Sal;
    printf("Enter Your Basic Salary ");
    scanf("%f",&B_Sal);
    printf("the amount entered is %f \n",B_Sal);
    DR_Al=0.4*B_Sal;
    H_RA=0.2* B_Sal;
    Total_Sal=B_Sal+ DR_Al+ H_RA;
    printf("The Total Salary Is %f",Total_Sal);
    

无论给出什么输入,它都会以负垃圾值的形式给出输出。当数据类型更改为 float 时,同样的代码可以正常工作。

【问题讨论】:

编译器应该警告您scanf("%f",&B_Sal); 中的格式说明符不正确,应该是%lf。如果没有,请打开完整的警告,如果仍然没有,请获得更好的编译器。 float%fdouble%lf。不要将其与 printf 的行为方式进行比较:它是一个有一些相似之处但实际上完全不同的函数。 哦,谢谢它成功了...不过我是初学者。 我们也一样..scanf 是给初学者使用的,但一点也不简单。 【参考方案1】:

要获得 double 作为输入,说明符是 %lf,

    #include <stdio.h>
#include<string.h>
int main()

    double B_Sal, DR_Al,H_RA, Total_Sal;
    printf("Enter Your Basic Salary ");
    scanf("%lf",&B_Sal);
    printf("the amount entered is %f \n",B_Sal);
    DR_Al=0.4*B_Sal;
    H_RA=0.2* B_Sal;
    Total_Sal=B_Sal+ DR_Al+ H_RA;
    printf("The Total Salary Is %f",Total_Sal);

输出:

【讨论】:

请不要发布纯文本图片。而是将其作为格式化文本直接复制并粘贴到您的问题中。这适用于代码以及程序的文本输入和输出。 @Gerhardh - 使用示例输出的屏幕截图来演示由答案代码产生的响应的准确表示是常见且合理的。不将其包含在问题中的原因是,由于无法编译图像,因此可能难以提供帮助:) @ryyker 如果在格式、怪异字符等方面有什么特别之处不能表示为纯文本,我会同意。这些都不适用于那个例子。此外,没有理由包含不是来自程序而是来自 IDE 的额外打印输出。

以上是关于通过 scanf() 获取输入后将垃圾值作为输出的双数据类型的主要内容,如果未能解决你的问题,请参考以下文章