-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)'。 –