重温c语言之,7天开整,就是随便的写写,第二天

一:操作符

  除法:

    如果都是整数,除数,被除数都是整数,那么结果:就是整数的商(没有小数部分的),例如: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.修饰函数

      这个与修饰全局变量差不多,函数由原本的外部链接属性变成了内部链接属性

 

posted @ 2024-11-01 18:18  我是一个小笨蛋  阅读(40)  评论(0编辑  收藏  举报