嵌入式学习第二篇——c语言基础1

C语言基础:

    1.基础:

       1.基本数据类型、运算符、表达式

       2.常用的输入输出函数

       3.流程控制

    2.重点知识:

       1.数组

       2.函数

       3.指针

   3.难点知识:

      1.构造数据类型

       2.链表

       3.内存管理

=========================================================================

基础一——基本数据类型
1.进制转换:
    二进制、八进制、十进制、十六进制

    二进制:0 1
    八进制:0 1 2 3 4 5 6 7 
    十进制:0 1 2 3 4 5 6 7 8 9
    十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f 

    二进制、八进制、十六进制 -> 十进制 
        对应位 * 对应位的权值再求和

    123 == 1 * 100 + 2 * 10 + 3 * 1
        == 123 

    1001 1110 -> 158

    17  -> 15
    1af -> 15 + 160 + 256
        -> 431 

    十进制 -> 二进制、八进制、十六进制
        十进制数除以进制数得到的余数逆序排列

    二进制 八进制 十六进制:
    八进制1位对应二进制3位
    十六进制1位对应二进制4位

2.程序如何在C语言中被运行起来?
    程序(外存中)
    执行(加载到内存中)
    程序运行结束(回收内存空间)

3.数字在内存中的存储:
    正数在计算机中存放对应的二进制数
    负数在计算机中存放补码
        1.原码  1010101
        2.反码  0101010
        3.补码  0101011
        4.内存数据   符号位+0101011

4.gcc编译的流程步骤:
    gcc filename.c 

    1.预处理
        处理和#号相关代码

        1.头文件展开
        #include 
        2.宏定义替换
        #define  M    100  
        3.条件编译
        #if #elif #else #endif #ifndef #ifdef 

        gcc -E filename.c -o filename.i 

    2.编译
        将C语言程序编译成汇编代码

        gcc -S filename.c -o filename.s 

    3.汇编
        将汇编代码编译成二进制代码

        gcc -c filename.c -o filename.o 

    4.链接 
        将多个二进制代码链接成为一个可执行程序

        gcc filename.c -o filename 

=================================================================================================================================
1.基本数据类型、运算符、表达式
    1.数据类型分类
        1.基本数据类型:
            整形数据 short int long 
                    short (signed short)
                          unsigned short 
                    int   (signed int)
                          unsigned int 
                    long  (signed long)
                          unsigned long 

            浮点型数据 float double 
            字符型 char
            逻辑类型(泊尔类型) bool 
            缺省类型(void)
        
        2.构造数据类型
            结构体
            共用体
            枚举类型

    3.基本数据类型
        1.整数类型:

                                    名称              占内存空间                值域范围                      存储方式
            short:              短整形             2个字节空间         -32768 - 32767                  补码
    unsigned short:   无符号短整型      2个字节空间             0 - 65535               对应的二进制数
            int:                   整形                4个字节空间         -21亿 - 21亿                      补码
       unsigned int:      无符号整形        4个字节空间              0 - 42亿                对应的二进制数
          long:                长整型               8个字节空间         -2^63 - 2^63 -1                 补码
      unsigned long:   无符号长整型      8个字节空间             0 - 2^64                对应的二进制数

            练习:
                编写程序测试数据类型所占字节数:
                    short   2
                    int     4
                    long    8
                    float   4
                    double  8
                    char    1
                    void    1

例:

嵌入式学习第二篇——c语言基础1_第1张图片

嵌入式学习第二篇——c语言基础1_第2张图片
         
        2.浮点数类型:
            float 
            double 
            3.1415926 
            5.12 
            所有的浮点数类型均为有符号类型,没有无符号类型的概念

                      名称                                            占内存空间大小                值域范围                        

float   单精度浮点数类型(最多表示6-8位有效数字)     4个字节         -3.4*10^38 - 1.18*10^-38                                                                                                                    1.18*16^-38 - 3.4*10^38

   储存方法:1位符号位 + 8位指数位 + 23位尾数位
double  双精度浮点数类型(最多表示12-14位有效数字)   8个字节     -1.80*10^308 - 2.23*10^-308                                                                                                              2.23*10^-308 - 1.80*10^308

储存方法;1位符号位 + 11位指数位 + 52位尾数位

    IEEE754 :

*******浮点数 -> 二进制形式 -> 科学计数法转换 -> 小数点后存入尾数位中 -> 指数位+偏移数(float:127 double:1023)以二进制形式存入指数位中 
******和整数存储方式完全不同

        3.字符型:
            char 
            a .. z
            A .. Z 
            # ? .. 

            ASCII码表:
            字符和数字的对应关系

            a -> 97 

            名称        内存空间大小         值域范围            存储方式                                           unsigned char        1个字节              0 - 255        存储字符在ASCII码表中对应数字的二进制形式 
 signed char            1个字节             -128 - 127             同上

        4.逻辑类型:
            bool 

            名称                内存空间大小            值域范围               存储方式 
            泊尔类型 bool       1个字节                 true                        1
                                                                      false                        0

            在C语言中所有的非0值均为逻辑真值
            在C语言中所有的0值为逻辑假值

        5.缺省类型:
            void 

            搭配函数和指针使用

            void a;

2.常量和变量:
        1.常量: 在程序运行过程中值不允许发生改变的量
        2.变量: 在程序运行过程中值可以发生改变的量
        3.表达式:由一个或者多个运算符连接的变量常量组成的式子

    1.整形常量:
        默认为int类型

        100         int类型
        100l        long类型
        100u        unsigned int类型 
        100ul       unsigned long类型
        100L 
        100U 
        100UL 

        0123        八进制常量
        0x1a        十六进制常量
        0X1A

    2.整形变量:
        1.变量要先定义再使用
            1.变量定义的形式
                数据类型 变量名;

                1.变量名可以由字母、数字、下划线构成不能以数字开头
                2.变量名不能与C语言关键字重名
                3.变量名最好不要与库函数重名
                4.变量名最好是见名知意 
                    
                    驼峰法:
                    int TempNum;
                    int MaxCnt;
                    int MinNum;
                    int AvgScore;

                    内核法:
                    int temp_num;
                    int max_cnt;
                    int min_cnt;
                    int avg_score;

        2.变量拥有存储空间,也有值域范围

    3. 浮点型常量:
        默认为double类型 

        3.1415          double类型
        3.1415f         float类型 
        3.1415e8
        3.1415e-8
        3.1415E8
        3.1414E-8 

    4. 浮点型变量
        double d;
        float f;

    5.字符型常量:
        'a' 'A'
        'z' 'Z'
        '?' '#'
        '~' ' '
        '\'' : '号
        '\n' : 换行符
        '\t' : 横向制表符
        '\v' : 纵向制表符
        '\r' : 回车符
        '\b' : 退格符
        '\\' : \符 
        '0'
        '1'  : 字符1 
        '2'  
        '3'
        '4'
        '5'
        '6'
        '7'
        '8'
        '9' 
        '\0' : 字符\0

        '1' -> ASCII码表 -> 49      
        1   : 1

        '0'  : 48 
        0    : 0
        '\0' : ASCII码值为0 用来标识字符串的结尾

        '\123' : 八进制123对应的字符
        '\x32' : 十六进制32对应的字符  

    6.字符型变量:
        char ch;

    7.字符串常量

    8.标识常量

作业:
    1.课后习题3.3 

嵌入式学习第二篇——c语言基础1_第3张图片
    2.课后习题3.7 

嵌入式学习第二篇——c语言基础1_第4张图片

3.3

(1)12,A(2)40,20(3)113,4B(4)-1151,-269(5)-157,-6F(6)-4463,-B1B

(7)-67756,-6FEE(8)-51013,-520B

3.7

嵌入式学习第二篇——c语言基础1_第5张图片

嵌入式学习第二篇——c语言基础1_第6张图片

你可能感兴趣的:(学习,c语言,linux,嵌入式硬件)