簡體   English   中英

C中關於Output的說明

[英]Explanation about Output in C

所以我在 C 中有以下代碼片段:

int a = 25, b = 100, c;
if (b++ <= (a * 4))
  c = 3;
else
  c = 20;
printf ("%f\n", (float) (b / c));

當我運行代碼時, output 返回值33.0000 我期待 output 是33.6667 我想知道為什么會這樣? 我的計算如下:

  • 在第 2 行中,b 在操作后遞增,因此雖然語句將返回 true (100 <= 25*4),但在此操作后 b 的值將是 101。
  • 在 output 中,我們計算 101/3,應該返回 33.6667
  • 然而,情況並非如此。

謝謝您的幫助!!

表達式b / c正在執行 integer 除法,因為兩個操作數都是整數。 這意味着結果值被截斷。

如果要執行浮點除法,請將操作數之一轉換為float

printf ("%f\n", (float)b / c);

您已在代碼中將 b 和 c a 聲明為 int ,然后您在其中執行了除法運算,這意味着您正在對整數執行除法,並將結果轉換為浮點數。 如果您需要除法來給出精確的浮點值,請將變量聲明為浮點數,

    int a = 25;
    float b = 100.0, c;
if (b++ <= (a * 4))
  c = 3.0;
else
  c = 20.0;
printf ("%f\n",  (b / c));

b/c 的 integer 除法在轉換之前完成,因此您將 output 設為 33.000。嘗試將變量 b 轉換為浮點數,然后執行除法運算

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM