为什么输出总是为零?

时间:2018-04-09 20:03:26

标签: c types area

#include <stdio.h>

int main(void)
{
    int a,b,c,t;
    printf("Get the height of the triangle",a);
    scanf("%d",&a);
    printf("Get the base of the triangle",b);
    scanf("%d",&b);
    t=0.5;
    c=t*(a*b);
    printf("The area of the triangle:%d\n",c);
    scanf("%d",&c);
    return 0;
}

编写代码,编译和执行代码后,无论输入ab的值,答案始终为零。我想知道为什么,以及如何纠正我的错误。

3 个答案:

答案 0 :(得分:4)

int无法保存浮点值。将浮点值赋给int将截断小数点处的值。

当您将0.5分配给t int时,它将设置为0。将任何内容乘以0会产生0

执行乘法时,您需要使用浮点数据类型floatdouble,例如:

#include <stdio.h>

int main(void)
{
    int a, b;
    float c, t;
    printf("Height of the triangle: ");
    scanf("%d", &a);
    printf("Base of the triangle: ");
    scanf("%d", &b);
    t = 0.5f;
    c = t * (a * b);
    printf("The area of the triangle: %f\n", c);
    getchar();
    return 0;
}

或者:

#include <stdio.h>

int main(void)
{
    int a, b;
    double c, t;
    printf("Height of the triangle: ");
    scanf("%d", &a);
    printf("Base of the triangle: ");
    scanf("%d", &b);
    t = 0.5;
    c = t * (a * b);
    printf("The area of the triangle: %lf\n", c);
    getchar();
    return 0;
}

答案 1 :(得分:1)

设置MockCardService.getCardDetails()时,设置t=0.5; int

浮点数将被截断为整数部分,这意味着你得到float

因此,当您乘以t=0时,您会t*(a*b)并获得0。

使用0*a*b,一切正常。

答案 2 :(得分:-1)

您的数据类型&#39;变量是int。将浮点值赋给变量&#39; t&#39;在你的情况下它被截断它将被截断为0.为了得到正确的结果,你期望改变你的t变量数据类型从int到float