“从'int'转换为'float'可能会改变其值”

"conversion to 'float' from 'int' may alter its value"

提问人:Peter Kirsch 提问时间:10/29/2023 最后编辑:Vlad from MoscowPeter Kirsch 更新时间:10/29/2023 访问量:70

问:

我研究了这个错误,但一直找不到它。我也是新手。我想学习 C 的基础知识,这是我的第一个程序。我想修改函数,以防万一有人分裂。sumcalcfloat2/5

#include <stdio.h>

int getNumber1() {
    int myNumber1;
    printf("\n gib eine Zahl ein: ");
    scanf("%d", &myNumber1);
    return myNumber1;
}

int getNumber2() {
    int myNumber2;
    printf("\n gib eine weitere Zahl ein: ");
    scanf("%d", &myNumber2);
    return myNumber2;
}

char getOp() {
    char myOp;
    printf("\n gib einen Operanten ein: ");
    scanf(" %c", &myOp);
    return myOp;
}

void calc(int number1, int number2, char op) {
    if (op == '+') {
        int sum = number1 + number2;
        printf("\n\n%d %c %d = %d", number1, op, number2, sum);
    }
    if (op == '-') {
        int sum = number1 - number2;
        printf("\n\n%d %c %d = %d", number1, op, number2, sum);
    }
    if (op == '*') {
        int sum = number1 * number2;
        printf("\n\n%d %c %d = %d", number1, op, number2, sum);
    }
    if (op == '/') {
        float sum = number1 / number2;
        printf("\n\n%d %c %d = %.2f", number1, op, number2, sum);
    }
}

int main() {
    int cont = 1;
    while (cont == 1) {
        int number1 = getNumber1();
        int number2 = getNumber2();
        char op = getOp();
        calc(number1, number2, op);
        printf("\nMoechten Sie weitere Berechnungen durchfuehren? (1 fuer Ja, 0 fuer Nein): ");
        scanf("%d", &cont);
    }
    printf("\nDanke und auf Wiedersehen.");
    return 0;
}

但是我得到的错误是.为什么会这样,我该如何解决这个错误?conversion to float from int may alter its value

c 编译器错误 浮点 变量赋值

评论

2赞 pmg 10/29/2023
不相关:在处理浮点数时首选(忘记存在)。doublefloat

答:

2赞 Vlad from Moscow 10/29/2023 #1

编译器发出此消息是因为将整数值分配给浮点类型的变量。float

在此声明中

float sum = number1 / number2;

表达式使用整数算术计算。因此,分配给 float 类型的变量没有多大意义。number1 / number2

而是为考试而写

float sum = ( float )number1 / number2;

评论

0赞 Peter Kirsch 10/29/2023
还是同样的错误。sum 也始终为 0。谢谢回答!
0赞 Vlad from Moscow 10/29/2023
@PeterKirsch 显示您正在使用的 number1 和 number2 的值。
0赞 Peter Kirsch 10/29/2023
我该如何“显示”?只是发布截图?对不起,我是新手。
0赞 Vlad from Moscow 10/29/2023
@PeterKirsch 数字 1 和数字 2 等于什么?
0赞 Vlad from Moscow 10/29/2023
@PeterKirsch 这是更新程序的输出 gib eine Zahl ein: 1 gib eine weitere Zahl ein: 2 gib einen Operanten ein: / 1 / 2 = 0.50 Moechten Sie weitere Berechnungen durchfuehren?(1 fuer Ja, 0 fuer Nein):