C 語言中的 double 和 int

發布 科技 2024-02-09
9個回答
  1. 匿名使用者2024-02-06

    #include

    int main(void)

    double d;

    printf("enter a single digit: ");

    scanf("%lf", &d);

    printf("the digit entered is %i", (signed int)d);

    return 0;

    如果將強制轉換新增到輸出中,則輸出將是正確的結果,這可能是因為原始資料型別是雙精度浮點,但它的格式為 %i(有符號整數),並且結果在轉換過程中是不可預測的。

    說白了,上面的圖片很好。

    在圖中,你是用 gdb 來除錯你的**,當輸入是 4 時,我們用這個浮點數 6 的儲存方式看堆疊(x 8bf 後面跟著 address 是記憶體位址的值,以位元組表示,顯示 8 個位元組),double 型別占用了 8 個位元組,可以看到這 8 個位元組中的前 6 個是 0, 那麼就容易理解了,當你按照%i(有符號整數)格式化時,不管是有符號還是無符號間數,都會按照表示式中的int型別進行處理(自動型別公升級),也就是在一般int型別為32的機器上,8位元組的雙精度數會被截斷,取前4個位元組。

    不是很清楚嗎? 房東可以再做乙個實驗,你輸入乙個浮點數來檢視(例如,結果會顯示多少? 絕對不是 0

    這是乙個非常大的數字,因為浮點數的前4位不是0,而且非常大,關於記憶體中雙精度浮點數的具體儲存方法,以及prinf函式的內部機制,房東可以注意一下。

  2. 匿名使用者2024-02-05

    i 是什麼意思?

    你想要什麼樣的輸出格式?

    如果要輸出浮點型別,請使用 %lf A,使用 %d 進行整形,並使用 %g 表示浮點數小數點後的額外 0

    我還沒見過!

  3. 匿名使用者2024-02-04

    我是什麼? 沒聽說過。

  4. 匿名使用者2024-02-03

    double 是 C 語言中的乙個關鍵字,它表示雙精度浮點型,占用 8 個位元組的記憶體空間,取值範圍為“,完全保證雙精度的有效位為15位,16位只是值的一部分***。

    在 C 中,float 和 double 都是浮點數。

    不同的是,double 表示的範圍大於 float 的範圍,小數部分的範圍也高於 float。

    舉個例子:圓周率。

    這個數字如果用浮點數表示,最多只能精確到小數點後 6 位。 雙精度可以精確到小數點後 15 位左右。 確切地使用了多少位數字,具體取決於所使用的編譯器。

    是的,但是每台機器的編譯器之間沒有太大區別。

    至於整數部分,浮點數所代表的整數部分的範圍已經足夠大了,可以表示到萬億級,已經是無邊無際了。 double 表示的整數範圍甚至更大。 在實際開發中,除了少數高精度領域外,基本上判斷浮子的使用就足夠了。

  5. 匿名使用者2024-02-02

    它表示整數資料型別,通常為 4 個位元組長。

  6. 匿名使用者2024-02-01

    double 型別在記憶體中占用 8 個位元組,int 型別在記憶體中占用 4 個位元組。 double 的值大於 int。 可以理解為雙水壺是8公升水壺,int型是4公升水壺,大水壺中的水不能直接倒入小水壺中。

    如果要成功分配值,則需要將 int 型別轉換為 double 型別。

    強制型別轉換:將值範圍較大的資料型別轉換為值範圍較小的資料型別,自動執行,而強制則需要手動執行。

    轉換格式:資料型別變數名稱 = 資料型別)要轉換的資料值。

    賦值給int型別,修改為int i = int);double 型別轉換為 int 型別,並直接去掉小數點。

    強烈注意:將浮點數轉換為整數並直接刪除小數點將導致精度損失。

    int 被強制轉換為 short 並砍掉兩個位元組,這可能會導致資料丟失。

  7. 匿名使用者2024-01-31

    Double 是計算機使用的一種資料。 與單精度浮點數相比,雙精度使用 64 位(8 位元組)來儲存浮點數。

    它可以表示十進位系統中的 15 或 16 位有效數字,負值範圍為 to,正值範圍為 to。

    例如,宣告乙個型別為 double 的變數:

    double num;

    初始化 double 型別的變數:

    num = ;

  8. 匿名使用者2024-01-30

    float 和 double 都是 C++ 中的浮點資料型別,三者的區別在於:

    1.精度不同。

    浮點型是單精度浮點數,雙精度型是雙精度浮點數。

    2. 分配儲存空間。

    C++ 編譯器為浮點型別分配 4 個位元組,為雙型別分配 8 個位元組。

    3.有效位數不同。

    float 可以提供 6 個有效數字,double 可以提供 15 個有效數字。

  9. 匿名使用者2024-01-29

    double 的定義是浮點數。

    雙精度資料比浮點資料更準確,占用更多空間。 Double 的精度是浮點數的兩倍,因此通常使用更準確的計算。

    雙精度浮點值可以轉換為其他型別的整數或浮點數,反之亦然。 雙精度浮點常量的最後乙個字元可以用“d”或“d”標記。 儲存格式類似於浮點,最高位為符號位,接下來的 11 位是指數位,接下來的 52 位是尾數位。

    與數值型相比,它可以提供更高的數值精度,使用浮點數的固定儲存長度,每個雙精度浮點型資料占用 8 個位元組。 與數值資料不同,其小數點位置由輸入的資料值決定,並且只能用於表中的字段。

    浮點資料:

    1.浮子型。

    編譯系統為每個浮點型變數分配 4 個位元組,這些值以歸一化二進位數指數的形式儲存在記憶體單元中。

    2.雙型。

    為了擴大可以表示的值範圍,儲存了 8 個位元組的雙精度型別資料,可以獲得 15 位有效位。

    3.長雙型。

    不同的編譯系統以不同的方式處理長雙精度型別,Visual C++ 以與雙精度型別相同的方式處理長雙精度型別,分配 8 個位元組。

相關回答
15個回答2024-02-09

int 需要根據編譯器的大小來表示。

16位編譯器說明:int占用16位,記憶體2位元組,最大:32767; >>>More

9個回答2024-02-09

範圍。 你靜態字元 *chh;

static char *ch1;雖然兩個指標指向的位址沒有變化,但你有沒有想過它們指向的記憶體位址是否已經釋放,char chc[10]; 它是本地的,函式已經結束,生命週期已經結束,你正在嘗試使用 void times() 中的指標訪問它。 >>>More

4個回答2024-02-09

尾部節點接下來指向 null 並不難。

你只需要while(p->next! =null)。 >>>More

7個回答2024-02-09

哈哈,如果你只是在學習SQL程式設計,你都可以接受其中任何乙個,但我推薦Oracle,因為它更接近SQL的常見用法和本質。 再說一句:什麼重量不是重量,不可能直接學習重量級? >>>More

6個回答2024-02-09

了解以下規則:1)過載運算子不會改變運算子的優先順序。 >>>More