-2
我的输出应该是: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' 与一个新的变量线,改变了打印命令,和铸造(A/B),以 '浮动',但现在结果我只得到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'转换为浮点数,因为'C'中的'1/2 = 0'也会将输出更改为'printf( “f =%f \ n”,float_f)'。 –