1. 程式人生 > >C語言的基本資料型別總結

C語言的基本資料型別總結

一,整型
       1,int型別
               a:int變數:

                        int變數是有符號整數,佔用一個字的大小。但是ANSI規定int型別最少佔用16位 即-2^15~2^15-1
                                                     (注:計算機中一個字表示最自然的儲存單位)

                        2種宣告的方法: int x;                            //單獨宣告
                                                    int x, y, z;                    //多個變數一起宣告
                        3種為變數賦值的方法:x = 12;                              //直接賦值               
                                                              scanf("%d", &x);              //用scanf()賦值
                                                              int x = 12;                          //初始化的時候賦值
               b,int常量
                        C把不含小數點和指數的常數當做int常量來儲存
               c,八進位制和十六進位制的int常量
                        在C語言中預設的數字為十進位制。如果在一個數字前面加上字首0(零),就可以表示為八進位制了
                                                                 如果在一個數字前面加上字首0x或者0X,就可以表示為十六進位制
                  (注意:不論是十進位制還是八進位制還是十六進位制表示法,最終被轉換成的機器語言的值都是一樣的)
               d,用printf()列印八進位制和十六進位制數字
                     %o-----以八進位制形式列印
                     %x-----以十六進位制形式列印
                     %#o----以帶字首0的方式列印八進位制數
                     %#x----以帶字首0x的方式列印十六進位制數
                     %#X----以帶字首0X的方式列印十六進位制數
                                (注意:這些說明符可以列印任意基本資料型別,不論是long還是unsigned long型別等)
               e,整數溢位(省略)
       2, 其它資料型別
               a,變數(加上short、long、unsigned關鍵字)
                     short int(簡寫為short)
                     long int(簡寫為long)
                     long long int(簡寫為long long)
                     unsigned int(簡寫為unsigned)
                     unsigned long int(簡寫為unsigned long)
                     unsigned short int(簡寫為unsigned short)
                     unsigned long long int(簡寫為unsigned long long)
                    (注意:關鍵字signed表示有符號型別,加上去之後使資料型別更加明確,一般可以省略
                                  佔用位元組大小的排列順序為 short <= int <= long,C標準保證short至少為16位,int至少為16位,long至少為32位
                                   大多數情況下,long long型別為64位,long型別為32為,int型別為16位或32位)
              b,常量
                   不論是十進位制、八進位制還是十六進位制的常量,根據數字大小,以int、long、unsigned long、long long、unsigned long long的順序依次適應儲存
                   如果要將較小的常量儲存在較大的資料型別中,可以加字尾。字尾L或l、LL、u或U、ul等
              c,用printf()列印short、long、long long 和 unsigned型別數
                    %hd-----short    %ld-----long    %lld----long long    %u------unsigned    %lu------unsigned long     %llu-----unsigned long long (注意l和u的順序)
       3,字元char型別
                     a,一個char型別變數所佔用的位元組與平臺相適應,C保證char型別所佔記憶體足夠大,以儲存其所在系統上的基本字符集
                       (注:C語言中的一個位元組定義為一個char變數所佔用的位數)
                     b,大多數情況下佔用8個位元組,取值範圍為-127到128。可以在前面加上unsigned使其取值範圍為0-255以便表示擴充套件的ASCII碼
                     c,2種宣告方法:char x;                            //單獨宣告一個變數
                                                     char x, y, z;                        //同時宣告多個變數
                     d,4種賦值方法:char x = 'A';                             //直接用字元賦值
                                                      char x = 65;                           //用ASCII碼賦值
                                                      char x = '\007';                       //八進位制形式。格式為\0oo 可以省略前面的零
                                                      char x = '\x7';                          //十六進位制形式。格式為\xhhh或\Xhhh
                           (注意:65本來應該是一個常量,而這個常量應該被存為int型別,因此當被賦值的時候,只讀取最後一個位元組的內容
                             八進位制和十六進位制形式的轉義字元形式還可以用於字串中)
                     e,轉義字元序列

                                   \a----------報警     \b----------退格     \f----------走紙     \n----------換行    
                                    \r----------回車     \t----------水平製表符\v----------垂直製表符    
                                    \\------反斜槓(\)      \‘---------單引號(')       \"----------雙引號("")  
                                     \?----------問號(?) \0ooo-------八進位制值(o表示一個八進位制數字)    
                                     \xhhh----------十六進位制值(h表示一個十六進位制數字)

二,浮點型
        1,float、double和long double型別
               a,float型別:
                     有效數字至少6位
                     取值範圍至少為10的-37次方到10的37次方
                     儲存方式:以二進位制的指數形式用32位儲存一個浮點數,其中8位用於表示指數及其符號,24位用於表示尾數
               b,double型別:
                     有效數字至少10位
                     取值範圍同float,至少為10的-37次方到10的37次方
                     儲存方式:以二進位制的指數形式用64位儲存一個雙精度數,指數和尾數的位數隨系統不同而不同
         2,宣告方法同上
         3,浮點常量
                    浮點常量是指一個常量數字中至少存在一個小數點或者指數部分(區別於int常量)
                    預設情況下編譯器將浮點常量視為double型別,佔8個位元組,以便使常量之間的計算更加精確。
                    如果要更改為float型別,可以在後面加上f或F,如果要更改為long double型別,可以在後面加上l或L
                     還可以用十六進位制來表示浮點常量,那麼就需要在前面加上0x或0X接著就是十六進位制數字,但是指數P或p,表示是2的指數
                               比如:0xa.1fp10-------1010.00011111 * 2^10 = 101000011111  換成10進位制就是10364
         4,用printf()列印浮點數
               %f-----以小數形式列印float或double型別
               %e-----以指數形式列印float或double型別
               %a-----以十六進位制的指數形式列印float或double型別
               %lf、%le、%la-----分別以小數、指數、十六進位制指數的形式列印long double型別
       (注意:列印double型別的時候,預設只有6位有效數字,要列印更多的有效位可以在f前面加上.7 .8等)
         5,浮點值的上溢和下溢
               上溢:當計算結果是一個達到不能在計算機裡面表達的時候,就會發生上溢。發生上溢之後,計算得到的值為INF,表示無窮大
               下溢:當一個數字的尾數和指數已經是最小了,在進行運算以時這個數字更小的時候,就會發生下溢。發生下溢的時候,會損失有效數字的精度
         6,浮點數的舍入誤差
                當一個數字的精度太大的時候,將這個數字進行加減運算,由於計算機能夠表示出的有效位數有限,因此不能正確計算出結果
                比如:2e20 + 1 - 2e20   在第21位加上1,計算機是做不到的  如果是2e4 + 1 - 2e4  結果是1