重溫c語言之,7天開整,就是隨便的寫寫,第二天

我是一个小笨蛋發表於2024-11-01

一:運算子

  除法:

    如果都是整數,除數,被除數都是整數,那麼結果:就是整數的商(沒有小數部分的),例如:7/2=3;

    如果除數或者被除數其中一個是浮點數,那麼結果就是(條件是:能除盡的,並且小數在基礎資料型別包含下的)完整的商(包含小數部分的):例如:7/2.0=3.500000;

    如果想要在printf中,想要取小數點後1位,基本型別是:float----%.1f;如果是double----%.1lf,其他的就是類似(什麼小數點後幾位什麼的,這個數字就是變換著來就行了)

  取模:

    取模運算子的兩端都是整數

  逗號表示式:

    逗號隔開的一串表示式,特點:從左向右的依次計算,整個表示式的結果是最後一個表示式的結果,

    例如:int a=10;int b=20;int c=0;int d=(c=a-2,a=b+c,c-3);      d=5

二:關鍵字

  typedef:

    1.用於一個已有名字的資料型別,使其更新一個新的名字,讓程式碼變得更加的簡介,例如:在頭部寫上:typedef unsigned int unit;那麼在main裡面

    unsigned int num1; 與unit num2;是相同的型別,只不過名字不相同,但是效果一樣的

    2.用於結構體上面,把結構體命一個新的名字,例如:

    typedef struct Node
    {
     int data;
     struct Node *next;
    } Node;

   在main裡面 :struct Node n;與 Node n2;的效果是一樣的

  static:

    1.修飾區域性變數

      //在不使用static的時候

      #include<stdio.h>

      void test(){

        int a=1;

        a++;

        printf("%d ",a);

      }

      int main(){

        int i=0;

        while(i<10){

          test():

          i++;

        }

      }

    這個的結果就是:2 2 2 2 2 2 2 2 2 2

      //在使用static的時候呢

      #include<stdio.h>

      void test(){

        static int a=1;

        a++;

        printf("%d ",a);

      }

      int main(){

        int i=0;

        while(i<10){

          test():

          i++;

        }

      }

    這個的結果就是:2 3 4 5 6 7 8 9 10 11

    1. 為什麼會有這麼大的差距呢,就是因為static 存在,static修飾區域性變數的時候,區域性變數出了作用域,不會銷燬,本質上就是,static修飾區域性變數的時候,該變數了變數的儲存位置(由區域性變數----->成為靜態變數)。影響了變數的生命週期,生命週期變長,變成和程式的生命週期一樣

儲存位置
棧區:區域性變數
堆區:
靜態區:靜態變數

    2.修飾全域性變數

      static修飾全域性變數的時候,這個全域性變數的外部連結屬性就變成了內部連結屬性。其他的原始檔(.c)就不能再次使用這個全域性變數,例如:

      test1.c

      int num=10;

      test2.c

      #include<stdio.h>

      #include"test1.c"

      int main(){

        print("%d\n",num);

        return 0;

      }

      這個結果就是:10

      如果變成static修飾的全域性變數(num)時,這個全域性變數(num)就是從外部連結屬性變成了內部連結屬性,test2.c這個原始檔不能使用test1.c的內部變數了,例如:

      test1.c

      static int num=10;

      test2.c

      #include<stdio.h>

      #include"test1.c"

      int main(){

        print("%d\n",num);

      }

      結果:報錯,原因,num這個變數沒有定義且不存在

    3.修飾函式

      這個與修飾全域性變數差不多,函式由原本的外部連結屬性變成了內部連結屬性

相關文章