提问人:Peter Kirsch 提问时间:10/29/2023 最后编辑:Vlad from MoscowPeter Kirsch 更新时间:10/29/2023 访问量:70
“从'int'转换为'float'可能会改变其值”
"conversion to 'float' from 'int' may alter its value"
问:
我研究了这个错误,但一直找不到它。我也是新手。我想学习 C 的基础知识,这是我的第一个程序。我想修改函数,以防万一有人分裂。sum
calc
float
2/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
答:
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):
评论
double
float