初始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修饰后没法被连接;
相关文章
相关标签/搜索