C語言資料型態Type
初寫:2005.03.14, 更新日期:2022.02.09
 
參考資料:
 
每一種語言都有其自資料定義的方式,
資料型態的定義,在於讓C編譯器在製作執行檔時,
能向作業系統要求預留所需的資源,如:記憶體空間。
所以,在寫程式前,必須先清楚所要解決的問題使用哪一類的數值型態。

C語言資料型別:
  • 字元( char ) 占 1 Byte
    signed char     :-128  ~  +127
    unsigned char :  0     ~    255
    C語言的字串(String),其實就是字元陣列。

  • 整數( int ) 占 4 Bytes 232 = 4294967296
    short      int  2 Bytes(Turbo C 整數)
                  int  4 Bytes 
    unsigned int  4 Bytes (%u)
    long long int  8 Bytes (-263~263-1)

    (C99提供short、long 和 long long等修飾詞來宣告,但得視不同編譯器與平台的支援)

  • 浮點數( float ) 占 4 Bytes ( 10-38 ~ 10+38 )
    (sign bit:1, exponent:7bits, mantissa:24bits)
    在數學上,浮點數是類似實數(real number)的數,是可以包含整數;
    但嚴格說,C的浮點數和整數,是完全不相干範圍的數值!
    簡單來說,浮點數就是帶有小數的數

    雙精倍實數( double ) 占 8 Bytes
    (sign bit:1, exponent:11bits, mantissa:52bits)

    C語言資料型態表(32位元作業系統,long修飾詞沒作用)
    資料型態 長度
    (Bytes)
    數值範圍 精準位數 備註
     char  1  -128 ~ +127     
     unsigned char  1  0 ~ 255    
     int  4  -21億多 ~ +21億多    
     unsigned int  4  0 ~ 42億多    
     short int  2  -32768 ~ +32767    範例
     long long int  8  -263~263-1    
     float  4  ±3.4x10-38 ~ ±3.4x1038  7  
     double  8  ±1.7x10-308 ~ ±1.7x10308  15  
     long double  12  10-4932 ~ 104932  19  

    範例1:請判斷下列項目最佳的資料型態為何:
    • 爸爸的月薪
    • 筆記電腦的價格
    • 身高
    • 年齡
    • 體重
    • 家裡到學校距離
    • 性別

    範例2:請寫一個程式將上面表格之各資料型態所佔Bytes列出。
    #include <stdio.h>
    main( )

    {
       int a,b;
       b = sizeof ( a );  /* 思考一下,變數 b 如何省略*/
       printf("Size of int = %d Bytes \n",b);  /* 改良過的輸出*/
    }


    範例3:請使用Dev C++編譯以下程式,會看到什麼樣子的執行結果?
    #include <stdio.h>
    #include <stdlib.h>
    main()
    {
       int a=1234567890;
       printf("%d \n", a);

       system("PAUSE");
       return 0;
    }
    若程式中a的數值逐漸增加 a=13579...,
    請修改a的值,寫下最大能正確顯示結果,是什麼數值?
    以及,最小能正確顯示結果,是什麼數值?
    想想看,為什麼?

  • 滿溢(overflow):電腦運算的結果,大於所能表示的最大值。
    請計算整數 123456789 X 1000 的值為多少。

  • 下溢、虧位(underflow):電腦運算的結果,低於所能表示的最小值。
    請計算整數 -1234567x 10000的值。

  • 練習:ACM Q10323: Factorial! You Must be Kidding!

曾聖超老師製作