Мой вывод должен быть:C «Поплавок» генерации случайных ответов
ch = *
f = 200
ch =/
f = 0.50
Но по какой-то причине «/» дело случайное число каждый раз, когда я запускаю программу. 1639747584, а в следующий раз я получу 206200832, почему это? Это также единственная часть программы, где я использую «float» вместо «int».
Мой код:
#include <stdio.h>
#include <float.h>
void main() {
char ch;
int f;
int a = 10, b = 20;
ch = '*';
printf("ch = %c\n", ch);
switch (ch) {
case '*': f = a * b; printf("f = %d\n", f);
break;
case '/': f = a/b; printf("f = %d\n", f);
default: printf("invalid operator\n");
}
ch = '/';
printf("ch = %c\n", ch);
(float) f;
switch (ch) {
case '*': f = a * b; printf("f = %d\n", f);
case '/': f = a/b; printf("f = %d\n", f);
break;
default: printf("invalid operator\n");
}
}
Хорошо, я заменил «(с плавающей точкой) F» строку с новой переменной, изменил команду печати, и литая (а/б) «поплавка», но теперь В результате я получаю 0.00. Что еще не так?
Обновленный код:
ch = '/';
printf("ch = %c\n", ch);
float g;
switch (ch) {
case '*': f = a * b; printf("f = %d\n", f);
case '/': g = (float)(a/b); printf("f = %.2f\n", g);
break;
default: printf("invalid operator\n");
}
Итак, вы ожидаете, что 'int f' будет' 0,5'? –
Что вы пытаетесь сделать с '(float) f;'? –
Вы не можете изменить тип 'f' после его определения. Вы можете захотеть объявить другую переменную числа с плавающей запятой для '/', а также отбросить ваш 'a/b' до float перед делением, так как' 1/2 = 0' в 'C' также изменить вывод на' printf ("f =% f \ n", float_f) '. –