我正在用C編寫一個非常基本的程序(對C來說是新東西,所以只需要掌握一些東西),而且我正在爲TypeCasting而努力。爲什麼我需要在此處指定所有值?
這是一個簡單的計算程序,它允許你輸入兩個數字並決定你想要對它們做什麼(加,減,除,乘)。顯然,並非所有的數字都可以被所有其他數字整除,所以在我的switch語句中,我試圖將int轉換爲float。
按照要求,我的變量聲明在這裏:
int inputOne, inputTwo, calculatedValue = 0;
char calcType;
char restart = 'n';
我知道了通過使所有類型強制轉換值的工作,但這裏是我嘗試之前:
case 'd': case 'D':
calculatedValue = inputOne/inputTwo;
printf("%s%d%s%d%s%1.2f", "The value of ", inputOne, " divided by ", inputTwo, " is equal to ", (float)calculatedValue);
printf("\nPlease note: This is only accurate to two decimal places.");
break;
這隻返回4沒有任何小數位。然後我想也許這是由於計算仍處於INT,所以我改成了這樣:
case 'd': case 'D':
(float)calculatedValue = inputOne/inputTwo;
printf("%s%d%s%d%s%1.2f", "The value of ", inputOne, " divided by ", inputTwo, " is equal to ", (float)calculatedValue);
printf("\nPlease note: This is only accurate to two decimal places.");
break;
但這只是回報1082130432.00。不知道這個數字來自哪裏。
我周圍有使用這樣的:
case 'd': case 'D':
printf("%s%d%s%d%s%1.2f", "The value of ", inputOne, " divided by ", inputTwo, " is equal to ", (float)calculatedValue = (float)inputOne/(float)inputTwo);
printf("\nPlease note: This is only accurate to two decimal places.");
break;
因爲它是在一個switch語句,我可以只使用一個浮動的,而不是用原來的整數傳開,但我已經做了這個代碼試着更好地理解類型轉換,並且在不需要對所有東西進行類型轉換的情況下都能夠工作。任何人都可以照耀一些光明?我的講師在printf中使用了類型轉換,它工作得很好。在他的榜樣,他試圖尋找學生的平均年齡,他這樣做是這樣的:
printf("\nAverage age: %1.2f", (cAge1 + cAge2 + cAge3)/(float)cNumStudents);
希望這有意義,因爲它是一個簡單的問題這麼久對不起,我只是想了解爲什麼我不得不強調一切(因爲我的講師說你只需要做到一個價值)。
乾杯
編輯:
我只是嘗試以下,但它返回0.00,而不是答案。
calculatedValue = (float)inputOne/inputTwo;
printf("%s%d%s%d%s%1.2f", "The value of ", inputOne, " divided by ", inputTwo, " is equal to ", calculatedValue);
printf("\nPlease note: This is only accurate to two decimal places.");
break;
不是答案,但請注意'(float)something = something' [在標準C中無效](http://coliru.stacked-crooked.com/a/e99279b49f399697)。 – HolyBlackCat
您的變量的聲明丟失。請出示[MCVE]。你確定'inputOne'和'inputTwo'包含你期望的值嗎? –
答案完全取決於'inputOne'和'inputTwo'是如何聲明的。他們是「int」還是「double」,或者是什麼? –