I researched the error and haven't been able to find it. Also I am new to this. I want to learn the basics of C and here is my first program. I want to modify sum
in the function calc
so it is a float
in case someone divides for example 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;
}
But I get the error that conversion to float from int may alter its value
. Why is that and how can I solve the error?
The compiler issues the message because an integer value is assigned to a variable of the floating type float
.
In this statement
float sum = number1 / number2;
the expression number1 / number2
is evaluated using the integer arithmetic. So assigning to a variable of the type float does not make a great sense.
Instead write for exameple
float sum = ( float )number1 / number2;