閱讀347 返回首頁    go 阿裏雲 go 技術社區[雲棲]


c類型總結

基本數據類型:

邏輯類型。隻有兩個量true和false,表示邏輯真值和邏輯假值。用Int表示(0:false;非0:true)
整數類型。C支持四種整數類型:char, short, int和long,整數類型用於處理整數。
浮點類型。C支持兩種浮點類型:float和double,浮點類型用於處理包含小數部分的數值。
void類型。該類型也叫缺省型,用於描述值為空集, 主要用於說明不返回值的函數或指向任一類型的指針等。


使用char數據類型的變量需要特別注意,防止數據超出值域,例:
 char   c1= 129;       //出錯,數據越界(-127)
 unsigned char  c2= -1;  //出錯,數據越界(255)

 

Float不是一個確定的數值,比如寫一個很小的數,用科學計數法可以表示出來,但以%f作輸出時顯示為0

 

常量是指在程序運行期間其數值不發生變化的數據。
整型常量通常簡稱為整數。
C語言的整數可以是十進製數、八進製數和十六進製數。例如,十進製的數值3356可以有下列三種不同的表示形式:
十進製數    3356
八進製數    06434 
十六進製數  0xd1c

浮點常量又稱為實數,一般含有小數部分。
      在C語言中,實數隻有十進製的實數,它又分為單精度實數和雙精度實數,它們的表示方法基本相同。實數有兩種表示方法, 即一般形式和指數形式。

指數形式的實數一般是由尾數部分、字母e或E和指數部分組成。  當一個實數的符號為正號時,可以省略不寫,其表示的一般形式如下:

例如,1.176e+10 表示 1.176×1010
             - 3.5789e-8 表示 -3.5789×10-8
              通常表示特別大或特別小的數

 

所謂字符常量是指一個單一字符, 其表示形式是由兩個單引號包括的一個字符。
    例如,
  ‘A’,  ‘a’,  ‘Q’,  ‘0’,  ‘9’,  ‘+’,  ‘:’,  ‘?’,  ‘$’ 都是字符常量。
在C語言中, 字符常量具有數值。字符常量的值就是該字符的ASCII碼值。
因此,可以這樣說字符常量實際上是一字節的正整數。

 

所謂字符串常量是指用雙引號括起來的一串字符來表示的數據。

所謂標識常量是指用標識符代替常量使用的一種常量, 其名稱通常是一個標識符。
標識常量也叫符號常量,為了不與一般變量的名稱相混淆,標識常量的名稱一般使用大寫英文字母的標識符。標識常量在使用之前必須預先定義。

標識常量一般說明形式:   #define <標識常量名> <常量>

定義一個宏名字之後,可以在其他宏定義中使用,例如:
 #define ONE 1
 #define TWO ONE+ONE
 #define THREE ONE+TWO
如果一個串長於一行,可在行尾用反斜線”\”續行,如下:
#define LONG_STRING “This is a very very long \
 String that is used as an example”

C語言的變量在程序中用變量名表示。變量名由用戶根據其用途任意命名,變量名命名遵從標識符的起名規則(隻能由字母\數字\下劃線組成且頭一個字母隻能是字母或下劃線. 變量不能是C的特殊字符)。
在程序運行時,變量占據一定大小的存儲空間,其大小由其數據類型來決定的,作為某變量的內存空間的首地址,稱為變量的地址。

 

變量在程序中使用時,必須預先說明它們的存儲類型和數據類型。
變量說明的一般形式是:
    <存儲類型>    <數據類型 >    <變量名> ;
<存儲類型>可以是關鍵詞auto、register、static和extern之一;
<數據類型>可以是前麵講的基本數據類型,也可以是後麵要講解的自定義的數據類型.
<變量名>是一個合法的標識符,其前麵的32字符有效。
 注意:在上麵變量說明的式子裏,<變量名>之後有一個分號“;”意味著它是一個語句,該語句我們通常稱為變量的說明語句

C語言支持四種存儲類型:auto, register, static和extern。
 用auto存儲類型說明的變量都是局部於某個程序範圍內的,隻能在某個程序範圍內使用,通常在函數體內或函數中的複合語句裏。
C語言中,在函數體的某程序段內說明auto存儲類型的變量時可以省略關鍵字auto。
 例如,在函數體中,下列三條語句說明了三個auto存儲類型的變量:
   auto int  k ;     //說明一個auto整型的k變量
   int  j ;       //省略了auto,說明一個auto整型的j變量
   double x;      //省略了auto,說明一個auto雙精度型的變量

從作用域角度分:
局部變量:
 自動變量
 靜態變量
 存儲器變量
 形式參數
全局變量:
 靜態外部變量
 外部變量
靜態存儲:
 靜態局部變量
 靜態外部變量
 外部變量
動態存儲:
 自動變量
 存儲器變量
 形式參數

 

register稱為寄存器型,使用register關鍵詞說明的變量主要目的是想將所說明的變量放入CPU的寄存器存儲空間中,這樣可以加快程序的運行速度。
  如申請不到就使用一般內存,同auto ;
  register 存儲類型說明變量的方式如以下例子所示:
    register int  count;  
    說明一個存儲類型為register的整數變量;

extern稱為外部參照引用型,使用extern說明的變量是想引用在其它文件中函數體外部說明的變量。
   當變量在一個文件中的函數體外說明,所有其他文件中的函數或程序段都可引用這個變量。
 一般用於在函數之間傳遞數據。

static稱為靜態存儲類型,在C語言中,既可以在函數體內,也可在函數體外說明static 存儲類型的變量。
    在函數體內說明的static 存儲類型的變量也是一種局部變量,與auto最大不同點是:static存儲類型的變量在內存中是以固定地址存放的,而不是以堆棧方式存放的;隻要整個程序還在繼續運行靜態變量就不會隨著說明它的程序段的結束而消失,它下次再調用該函數,該存儲類型的變量不再重新說明,而且還保留上次調用存入的數值。

變量初始化的一般形式如下:
<存儲類型>   <數據類型>   <變量> = <表達式>   ;
變量的初始化是指變量在被說明的同時賦給一個初值。
例如,
   int     i=0;
   static   double  w=100.56,
   double  result = 1;

強製數據類型的轉換是指采用某種方式將某種數據類型強製轉換成指定的數據類型。這種轉換存在兩種方式:一種為顯式的數據類型轉換,另一種為隱式的數據類型轉換。
 顯式的數據類型轉換實現的一般形式為:
        (數據類型名稱)< 表達式 >

需要注意的是:
強製類型轉換符後麵的表達式如存在複雜運算,就一定要用小括號括起來
強製類型轉換符是一種不安全的轉換,一般都是將高級類型轉換成低級類型,要丟失數據的精度;
強製類型轉換並不改變表達式中變量的數據類型和其值。

所謂表達式是指由運算符、運算量和標點符號組成的有效序列,其目的是用來說明一個計算過程。
表達式可以獨立形成語句,該語句稱為表達式語句。
    表達式語句的一般形式為:
               <表達式>  ;

C提供的算術運算符:+,-,*,/,%,++,--。

&&,||運算的短路特性:
&&:當前一個條件為假的時候後一個條件就不用再計算了
||:當前一個條件為真的時候後一個條件就不用再計算了

 

位移位運算的一般形式:         
<運算量> <運算符> <表達式>
其中,
 (1)<運算量> 必須為整型結果數值;
 (2)<運算符>為左移位(<<)或 右移位(>>)運算符;
 (3)<表達式> 也必須為整型結果數值。

賦值運算符為“=”,其運算的一般形式如下:
<左值表達式> = <右值表達式>
賦值複合運算符其運算的一般形式如下:
<變量>  <操作符>=  <表達式>
相當於下列式子:
 <變量>  = <變量> <操作符> <表達式>
  x=y=15;

條件運算符"? :" 
   條件運算符"? :"是一個三目運算符, 其運算的一般形式是:    
<表達式1>  ?  <表達式2>  :  <表達式3>
例如,
       int  x=82, y=101;
       x >= y  ? x+18 : y-100   //運算結果為1
       x < (y-11) ? x-22 : y-1     //運算結果為60

sizeof運算符運算的一般形式如下:
             sizeof(<類型或變量名>) 
注意:它隻針對數據類型,而不針對變量!  
例如:
   sizeof(double)
    //計算結果為8 ,表明double類型占據8個字節
     sizeof(long)  
    // 計算結果為4 ,表明long類型占據4個字節
     sizeof(char)      
   //計算結果為1 ,表明char類型占據1個字節
     sizeof(float)     
   //計算結果為4 ,表明float類型占據4個字節

最後更新:2017-04-02 16:47:34

  上一篇:go android之自定義ViewGroup和自動換行的布局的實現
  下一篇:go linux知識