为什么我的产品在划分

时间:2017-11-07 01:14:39

标签: c division

例如,对于第一个数字I' ll将6变为7 而对于第二个数字,我将把4变为2 当它显示7除以3时,它只显示2。

#include <stdio.h>  
int a;  
int b = 1;  
int c;  
int x;  
int y = 2;  
int z;  
float d;  
int main()  
{  
    printf("enter first number\n");  
    scanf("%d", &a);  
    c = a + b;  
    printf("this is your number increased by one\n");  
    printf("%d", c);  
    printf("\n");  
    printf("enter second number\n");  
    scanf("%d", &x);  
    z = x - y;  
    printf("this is your number decreased by two\n");  
    printf("%d", z);  
    printf("\n");  
    printf("This is your first number divided by your second number\n");  
    d = c / z;  
    printf("%f",d);  

    return 0;  
}  

1 个答案:

答案 0 :(得分:2)

根据§6.5.5/5 of the Standard

  

当整数被分割时, / 运算符的结果是   任何小数部分丢弃的代数商。

由于cz都是整数类型,因此在分配给float变量d之前,会丢弃结果的小数部分。

要获得所需的结果,可以将其中一个操作数乘以1.0以强制浮点除法:

d = c / (1.0 * z);

不相关,但您应始终检查调用scanf()的返回值。此函数返回成功分配的次数。返回的值可用于检查输入是否符合预期。如果用户输入意外的输入,最好的情况是存储在变量中的值会令人惊讶;最糟糕的情况是该计划有不确定的行为,其次是核冬天......