ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c基础第三篇

2021-06-17 21:57:44  阅读:148  来源: 互联网

标签:10 第三篇 0000 int 0101 基础 运算符 1111


1.共享文件夹
    windows 与 linux 通讯 
    
    a.创建共享文件夹    
        虚拟机 ---> 设置 ---> 选项 ---> 共享文件夹 ---> 总是开启 
        
    b.共享文件在linux中的位置
        cd /mnt/hgfs/share 
    
    
    a. shell 命令
        
        echo: 输出 
            >
            >> 
        
        cat: 
        
        clear  :ctrl + l 
        tab:补全 
        
    b. vim 编辑器 
        命令行:
            yy     nyy dd ndd p P u crtl+r gg G  gg=G dG 
        插入:
            i     I     A a o O 
        底行:
            w wq q q! x set nu  set nonu     /+字符串+ 回车 n N 
            nohl     %s/old/new/g   m,ns/old/new/g 
    
    c. 计算机组成 
        
        1. 输入输出 
        2. alu运算器
        3. 控制器
        4. 存储器 
        5. 总线 
        
    d. 数据进制转换 
        
        二进制 0 1 
            0b 
             
        八进制 
        
        十六进制    a 
        
    e. 数据在计算机里面的存储 
        
        补码形式存储 
            
            char a = -5;
            源码:1000 0101 
            反码:1111 1010
            补码:1111 1011 
            
    d. 标识符  
        
        i. 数字 字母 下划线  数字不能开头 
        ii. 不能与关键字相同
        iii. 见名知意 
        iv. 区分大小写 
        v. 驼峰命名法 
        vi. _   
    
    e. 
        基础类型:
            char 
            short int long long long 
            float 
            double 
            
        构造类型
            int []
            struct 
            enum
            union 
            
        指针类型
            *
            
        空类型
            void 
            
3.变量 

    a. C语言中的变量:
    
            意义: 在内存中,通过数据类型,分配空间
        
    b. 语法格式 
        
        <存储类型> <数据类型> <标识符> 
        
            注:
                数据类型: 决定分配空间 对应的大小 
                标识符:    分配空间的名称  
                
4.常量:
    
    概念:程序运行当中,不会发生变化  
    
    a. 整形常量 
        
        100     200        0b111000    072 0xaffa  3.14    0.123e+10
        2.31e-10
        
        科学计算法  0.123e+10 = 0.123 * 10^10 
                    2.31 * 10^-10
                    
    b. 字符常量  ascii 码
        'a' ascii 97  - 32
        'b'
        'c'
        '\n' ascii  10 
        
        'A'  ascii 65
        '0'  48
         0 '\0' ascii 0 
    
    c. 字符串常量
        "hello world"
        "wood"
        "100"
        
    d. 标识常量: 宏定义
    
        i. 直接定义 
        
            #define M 10  // 没有 分号; 
            
            注意:
                (1). 在定义标识常量, define 这句话结尾是没有';'
                (2). 在定义宏的时候, 一般采用大写 
                (3). 宏在预处理阶段进行替换 
                (4). 在代码中一改全改 
                (5). 替换掉魔鬼数字 
                
            demo:
            #define N 11
                int arr[N]
                int arr[N]
                int arr[N]
                
                switch ()
                {
                    case add:
                    
                }
            
        ii. 宏运算 
        
            #define M     10
            #define N    M - 5
            
            int main()
            {
                printf("2 * N = %d", 2*N);
                                    15, 10, 
                                    // 2 * M -5 
                                    // 2 * 10 -5
                
                printf("N * N = %d", N * N); 
                                    M - 5 * M -5
                                    10 -5 * 10 -5
                                    -45 
                return 0;
            }
        
            注:
                宏在替换的时候,是原样替换  不会增加括号  
        
        iii. 宏函数 
        
            #define ADD(x,y) ((x)+(y)) 
            
            
            int main()
            {
                printf("%d\n", 2 * ADD(10, 20)); // 60
                              
                return 0;
            }
        
5. 输出 printf 
        
        格式:
            printf("控制格式", 数据列表)
            
        控制格式:
            %d : 十进制有符号的数字 
            %c : 字符 
            %s : 字符串  
            %p : 打印地址  
            
            char ch = 'm'    
            printf("%d", ch )
            
6. 运算符  

    a. 单目运算符 (只有一个操作数)
    
        + :  正   +5 
        - :  负   -5 
        
        ++ : 自增 +1 
            
            int a = 10;
            a++;
            printf("%d\n", a);
            
            --------------------
            
            int a = 10;
            ++a; 
            printf("%d\n",a); 
            
            区别:
                int a = 10;
                int b = 5;
                
                int c = (a++) - 5;  // 6, 5 
                printf("a = %d", a)
                int d = (++a) - 5;  // 5, 6 
                
                printf("c = %d", c);  5 
                printf("d = %d", d);  6
                
                注:
                    ++a 与 a++ 不一样 
                    ++a: 先++ 然后再计算 
                    a++: 先计算, 然后再++
                int a = 5; 
                
                int x = (++a) + (++a) + (++a);  // 18, 21, 24 , 22
                
        --: 自减 1
            
            --a
            a--
            
        *: 取地址符号
        &: 取变量地址符号  
        
        !: 非  取反,    
            非 0 即 真             
            !5
            
            False  True   C89     
            
        ~: 按位取反 
            
            unsigned char a = 10;
            
            ~a:
            0000 1010
            
            1111 0101: 0xf5  实际结果: 0xffff fff5 
            
            // 整形提升:
            1111 1111 1111 1111 1111 1111 1111 0101 
            f f f f f f f5 
            
            %d 
            补码:    1111 1111 1111 1111 1111 1111 1111 0101 
            反码:  1111 1111 1111 1111 1111 1111 1111 0100
            源码:    1000 0000 0000 0000 0000 0000 0000 1011
            --------------------------------------------------
                                                        -11 
                                                        
            
            
                
            
            
        
6.5 上午内容复习        
        
    a.变量 
        
        i.
            像内存中申请空间 , 数据类型 大小的空间
        
        ii.  
            <存储类型>    <数据类型> <标识符>
            
    b. 常量 
    
        i. 字面常量 
            100 0b1010    3.14  'a' 'b'
        
        ii. 字符串常量 
            "hello world" "cpdd"
        
        iii. 宏常量 
            
            #define M 10 
            #define N M+10 
            #define ADD(X,Y) (X+Y)
            
    c. 输出 
        printf 
            %s     字符串 
            %d  数字 
            %c  字符 
            %p  地址  
            
    d. 运算符 
        
        1. 单目运算符 
            
            + 
            -
            
            ++
            --
            
            * 
            &

7. 算数运算符: 
    
    + 
    -
    *
    /: 整除
        9/2 = 4
        9.0/2 = 4.5
        
    %: 取余  
        demo : 
            int a = 123;
            int g = a % 10;
            int s = a/10 %10
            int b = a /100 
            
8.移位运算符 二进制 
    
    左移运算符: 
            << 

            char a = 5 
            
            a:    0000 0101 
            <<            1
            ----------------
                0000 1010 
                
                5 << 2 : == 5 * 2 * 2 = 20 
                10 << 3 : == 10 * 2 * 2 * 2 = 80 
                
            0000 1010 
            <<         3
            ---------
            0101 0000
            ---------
             64 + 16 = 80 
             
    
    右移运算符 
            :补充的是符号位  
            
            >> 
            
            short a = 9 ;
            
            a >> 2 
            
            0000 0000 0000 1001 
            >>                   2
            --------------------
            0000 0000 0000 0010
            
            9/2/2 = 2 
            
        
    负数移动:
        
        int x = -3: 
        
        右移 2位 
        
        源码: 1000 0000 0000 0000 0000 0000 0000 0011
        反码: 1111 1111 1111 1111 1111 1111 1111 1100
        补码: 1111 1111 1111 1111 1111 1111 1111 1101| 
              >>                                    2|
              ---------------------------------------|-
              111111 1111 1111 1111 1111 1111 1111 11|01 
        
                    
        左移 2位            
                
        源码: 1000 0000 0000 0000 0000 0000 0000 0011
        反码: 1111 1111 1111 1111 1111 1111 1111 1100
        补码: |1111 1111 1111 1111 1111 1111 1111 1101| 
              |<<                                    2
              |-----------------------------------------
            11|11 1111 1111 1111 1111 1111 1111 110100  

            int b = 0x8000 0001
            1000 0000 0000 0000 0000 0000 0000 0001 
            <<                                       1
            ----------------------------------------
    总结:
        左移补0    右移补充符号位 
        
9.关系运算符: 
    >
    <
    >=
    <=
    !=
    == : 等于 
    
    if (a = 5) 

10.与运算符  (按位与) &
    
    &: 0 与 任何数相与都是 0, 1与任何数相与 都是 任何数:
    两真切为真 
    
    char a = 9;
    char b = 5;
    
    a & b : 
            a:     0000 1001 
            b:    0000 0101
            ---------------
                0000 0001

11.异或运算符 (按位运算)^

    相同为假,相异为真 
    
    char a = 10;
    char b = 9;
    
    a ^ b :
    
    0000 1010
    0000 1001
    -------------
    0000 0011
    
    
    异或性质:
        1. 0 异或任何数都能与任何数: 
        
        2. 异或两个相同的数字,会为0 且异或与顺序没有关系  
        
        
        0 ^ 5 ^ 5: 0
        
        0^ 5 ^ 6 ^ 5: 
        
        0000 0101
        0000 0110
        ---------
        0000 0011
        0000 0101
        -----------
        0000 0110
        
    demo:
        int a = 10;
        int b = 5 ;
        
    交换这两个数字:
        
        int temp = a;
        a = b;
        b = temp; 
        
    要求: 不定义临时变量 
    
        a = a + b;  a = 10  b = 5   
                    a = 15  b = 5
        b = a - b;  b = 10  a = 15 
        a = a - b;  a = 5  b = 10 
        
        

        0111 1110
        0000 0010
        ---------
        1000 0000 
        
        -128 

    有没有什么办法改进         字节 > 腾讯 > 阿里  
    

    3).
        int a = 10; 
        int b = 5;

        a = a ^ b;
        b = a ^ b; 
        a = a ^ b;


11.或运算符 (位运算符)|

    1 与 任何数相或 都为1, 0与任何数相或都等于 任何数  
    
    char a = 10;
    char b = 5;
    
    a | b : 
    
        0000 1010
        0000 0101
        ---------
        0f 
    
demo:
    
    (1)int a = fff5 40ff 将第7位置为 0 , 将这个数的第8位置位1  
        
        a: 1111 1111 1111 1111 0101 1000 1111 1111 
           1111    1111 1111 1111 1111 1111 0111 1111 
        -------------------------------------------
           0000 0000 0000 0000 0000 0000 1000 0000
           
        (a & ~(1 <<7)) 

        
        a: 1111 1111 1111 1111 0101 1000 1111 1111 |
                                       1 0000 0000    
    
        (a | (1 << 8))
        
    (2)unsigned char a = 1011 0101 现高低位翻转 
                             
        1011 0101
        1010 1101 
            
        思路:
            相邻位交换
            相邻两位交换
            相邻四位交换 
            
            1011     0101 
            7654    3210 
            
        相邻位交换    
            0111    1010
            6745    2301 
        相邻两位交换
            1101    1010
            4567    0123
        相邻四位交换    
            1010 1101
            0123 4567 
        
        交换相邻的两位: 
            奇位数字向左移, 偶位数字向右移 
                        
            1011     0101 
            7654    3210 
            
        
            1011 0101 
           &1100 1010 
           ---------- >> 1 
           
    
           1011 0101 
          &0101 0101
          ----------  
                    << 1

12.逻辑运算符 
    
    逻辑&& 
        两个条件都成立的成立的时候才为真  
    
    逻辑|| 
        两个条件有一个条件成立,他就会成立 
        
    短路原则:
    
        int a = 10;
        int b = 5;
        
        if (a > 0 && a < 20)
        {
            printf("hehe");
        }
    
        a = 10;
        if (a > 20 && a = 50)
        {
            printf("bye bye");
        }
        printf("a = %d\n", a);       50 / 10 
        
        
        if (a < 20 || a = 50)    
        {
            printf("hehe");
        }
        printf("a = %d\n",a);
        
13.条件运算符 三目运算符 
    格式: 
        ? : 
    判断问号前内容是否成立, 如果成立 则执行 : 前, 否则执行 : 后面的内容 
    
    
    int a = 10;
    int b = 20;
    int c = a > b ? a : b ;
    
    int min = a < b ? a : b;

14.赋值运算符 
    +=
    -=
    *=
    /=
    >>=
    <<=
    =
    
15.逗号运算符 
    ',': 一次执行内容,返回值是最后一个, 后面的值
    
    int a = (10, 20 ,30 ,40 ,50);
      
        
        
        
        
        

标签:10,第三篇,0000,int,0101,基础,运算符,1111
来源: https://blog.csdn.net/weixin_58458700/article/details/118002732

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有