天天看點

C語言資料類型、運算符與表達式

一、基本資料類型

        程式中使用的各種變量都需要遵循先定義再使用的原則,而對于變量的定義分為三個方面:資料類型,存儲類型和作用域

        (一)資料類型可分為:基本資料類型,構造資料類型,指針類型,空類型四大類。

                1 、基本資料類型最主要的特點是,其值不可以再分解為其它類型

                2、構造資料類型的特點是,其值可以分為若幹個“成員”或“元素”,每個“成員”有事一個基本資料類型或者構造類型。在C語言中,構造類型有以下幾種:數組類型、結構體類型、共用體(聯合)類型

                3 、指針是一種特殊的,同時又是具有重要作用的資料類型。其值用來表示某個變量在記憶體儲器中的位址。雖然指針變量的取值類似于整型量,但這是兩個類型完全不同的量,是以不能混為一談

                4 、在調用函數值時,通常應向調用者傳回一個函數值,而有些函數不需要傳回值,這種函數可以定義為“空類型”。其類型說明符為void

        (二)存儲類型分為包含四種  auto(自動變量)   static (靜态變量) extern(外部變量)   register(寄存器變量)。在C語言中常用的為靜态和外部變量  

                1 、 static 根據變量類型分為靜态局部變量和靜态全局變量。(1)靜态局部變量 它與局部變量的差別在于: 在函數退出時, 這個變量始終存在, 但不能被其它函數使用, 當再次進入該函數時, 将儲存上次的結果。其它與局部變量一樣(2)靜态全局變量它與全局變量的差別在于:全程變量可以再說明為外部變量(extern), 被其它源檔案使用, 而靜态全程變量卻不能再被說明為外部的, 即隻能被所在的源檔案使用。

               2 、extern稱為外部變量。為了使變量除了在定義它的源檔案中可以使用外, 還要 被其它檔案使用。

二、整型資料的分類

      (一)整型資料的一般分類如下:


              1、 基本型:類型說明符為int,在記憶體中占2個位元組。

              2、短整型:類型說明符為short int或short。所占位元組和取值範圍均與基本型相同。


              3、長整型:類型說明符為long int或long,在記憶體中占4個位元組。


              4、無符号型:類型說明符為unsigned。++i

     (二)整型資料的表示方法

              1、十進制數:十進制數沒有字首。其數位為0~9。其中0不能作為第一位

              2、八進制數:八進制數必須以0開頭,即以0作為八進制數的字首。其數位為0~7。八進制數一般為無符号數


              3、十六進制數:十六進制數字首0X或0x。其數位取值為0~9,A~F或a~f。

三、自增自減運算符  


          ++i:i自增1後再參與其他運算(--i)與之相同

          i++參與運算後,i的值再自增1.(i--)與之相同  (符号在前先運算再自增減,符号在後運後再自增減)

四、逗号運算符

       在C語言中逗号“,”也是一種運算符,稱為逗号運算符其功能。是把兩個表達式連接配接起來組成一個表達式, 稱為逗号表達式。其一般形式為: 表達式1, 表達式2

         其求值過程是分别求兩個表達式的值,并以表達式2的值作為整個逗号表達式的值。

         1、逗号表達式一般形式中的表達式1和表達式2 也可以又是逗号表達式。表達式1, ( 表達式2, 表達式3 )形成了嵌套情形。是以可以吧逗号表達式擴充為以下形式:表達式1, 表達式2, …表達式n 整個逗号表達式的值等于表達式n的值

2、程式中使用逗号表達式,通常是要分别求逗号表達式内各表達式的值,并不一定要求整個逗号表達式的值。

         3、并不是在所有出現逗号的地方都組成逗号表達式,如在變量說明中,函數參數表中逗号隻是用作各變量之間的間隔符。  

比如


#include <stdio.h>

int main(int argc, char *argv[]) {
    

    int a1,a2,b=2,c=7,d=5;
 


    a1=(++b,c--,d+3);   //       a2=0  b=3  c= 7(暫時按7算以下為6)  d=5   a1=(d+3)=8

    printf("a1=%d  a2=%d b=%d c=%d d=%d", a1,a2,b,c,d);

// 列印結果為a1=8  a2=0 b=3 c=6 d=5


    a2=++b,c--,d+3;    //  a2=4  b=4 c=6(現在為6以下為5) d=5

    printf("a1=%d  a2=%d b=%d c=%d d=%d", a1,a2,b,c,d);

// 列印結果為a1=8  a2=4 b=4 c=5 d=5

}

繼續閱讀