初始C語言

**操做符**
            <<左移操做符(對應的二進制序列左移一位)
           >>右移操做符
           int a=1;
             int b=a<<1;(00000000000000000000000000000001)

             b=2(00000000000000000000000000000010)

             位操做:二進制位操做
             &按位與,|按位或,^按位異或
             int a=3
             int b=5;
             int c=a%b;
             (3:011         5:101)
             十進制轉化位二進制:1111(1*2^3+1*2^2+1*2^1+1*2^0)
              按位與;同是爲真是爲1
                按位或:有一個爲真時爲1
                按位異或:都是1,都是0時爲0;一個是1一個是0時爲1;(對應的二進制位相同爲0相異爲1)

                a+=10(a=a+10)複合賦值符;

                單目操做符,雙目操做符,三目操做符:
                單:一個操做數   雙:兩個操做數
                三:三個操做數
                C語言中0爲假非0爲真
                int a=2;
                !a=0

                sizeof求類型的大小(變量或者類型所佔空間大小按字節打印)
                sizeof(a)=sizeof (int)=sizeof a
                也能夠求一個數組大小:
                int arr[10];十個整形元素的數組大小是40個字節
                sizeof (arr);大小是40 字節
                數組元素的個數:數組總大小除以每一個元素的大小;
                int sum=sizeof(arr)/sizeof(arr[0])(數組總的大小)

                \0   0    '0'區分
                \0的ASCLL是0;

    ~按位取反:
        ~0的值:00000000000000000000000000000000
        取反    :    11111111111111111111111111111111

        只要是整數在內存中存儲的是補碼,整數中的正數原碼反碼補碼都相同
        負數在內存中存儲的是補碼,打印的是原碼
        例子:
        原碼是直接按照正負寫出的二進制序列
        反碼是符號位不變其餘位按位取反
        補碼是反碼加一

        -2的原碼:10000000000000000000000000000010
        反碼:1111111111111111111111111111101
        補碼:反碼加一:111111111111111111111111111111111111110

        --操做符++操做符:
        int a=10;
        int b=a++;(後置加加)
        因此得出b的值是10,a是11;
        int b=++a;(前置加加)
        因此b值是11,a的值是11;

    (類型):強制轉換
    int a=(int)3.14;強制轉換:3.14是double類型強制轉換成int 類型

    關係操做符:>,<,==,>=,<=

    0表示假一切非0表示真:
    &&邏輯與||邏輯或
    int a=3;
    int b=5;
    int c=a&&b;
    c的值是1;(a和b都是真因此c的值也是真)

    三目操做符:
    exp1?exp2:exp3:若是表達式1的值是真的話輸出表達式2的值做爲最終結果,若是表達式1的值是假的話輸出表達式3的值做爲最終結果。

        逗號表達式:

        下標:
        int arr[0]={0};
        arr[4];(下標引用操做符)
        Add(a,b);(函數調用操做符)

          常見的關鍵字:(不能和變量名衝突)
        int  float .........c語言內置的關鍵字;
        auto:局部變量的前面省略了auto
        break,case;
        extern:其餘源文件的變量能夠被引用
        register:寄存器關鍵字(計算機存儲數據能夠存在硬盤,內存,寄存器,高速緩存)
        硬盤500g  內存4/6/8g  高速緩存   寄存器     ——————訪問速度逐漸加快,造價越高
                                                                                                    空間逐漸減少
        CPU中央處理器:從內存拿數據到CPU計算;內存訪問速度慢CPU訪問速度快;
                                      從寄存器裏面拿速度更快,讓內存的東西放到寄存器

        int main()
        {
                 register int a =10;(a定義爲寄存器變量)a常用時

                         return 0;
        }

        int定義的變量是有符號的;
        unsigned int num無符號數

        struct結構體關鍵字   union聯合體、
        typedef:類型重定義

        typedef unsigned int u int;
        unsigned int=u int ;

        局部變量用完時銷燬;
   void    text ()            a的值一直是1
     {
              int a=1;
                            a++;
                            printf(「a=%d"\n,a);
        }

        加上static:
        void   text()                    a的值逐漸加一
        {
              static     int a=1;
         a++;
                     printf("a=%d"\n,a);
        }

      因此當static修飾局部變量時,生命週期延長了;出了做用域不在銷燬;
            當static修飾全局變量時:
            加上static時改變了做用域,不能夠在別的文件中使用;

            總結:static修飾局部變量是改變了生命週期;修飾全局變量是改變了做用域,只能在當前文件中使用,出了該文件不能使用;

            static修飾函數時改變了函數的連接屬性,改變了做用域不能夠在別的文件中使用;
            普通函數具備外部連接屬性,可是被static修飾後沒法被連接;
相關文章
相關標籤/搜索