我正在使用一個函式,但代碼不起作用。我將函式分解成各個部分,并試圖了解自己發生了什么。我懂了:
int res;
res = (1 / 2) * 2 2;
printf("%d", res);
計算自己:
(1 / 2) = 0.5
0.5 * 2 = 1
1 2 = 3
(1 / 2) * 2 2 = 3,對嗎?
但是,當我運行代碼時,它給我的輸出是“2”,而不是“3”。
當我嘗試這個時:(使 '(1 / 2)' 到 '0.5')
int res;
res = 0.5 * 2 2;
printf("%d", res);
我得到的預期輸出為“3”,這很奇怪,因為上面的示例在理論上與較低的示例相同。這是否與我的編譯器不知道簡單的數學優先級規則有關?
uj5u.com熱心網友回復:
1/2 實際上試圖回傳一個整數結果 (0),乘以 2 也是 0。
您可以嘗試對其進行型別轉換
float res;
res = (float)1/(float)2 * 2 2;
printf("%f", res);
它將強制結果為浮點結果(0.5),這將導致正確答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390109.html
