嵌入式学习第二天

本文详细介绍了C语言的基础知识,包括基本数据类型、运算符、表达式、数组、函数、指针等核心概念,以及进制转换方法、程序在内存中的存储和gcc编译流程。
摘要由CSDN通过智能技术生成

复习

学习:

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

    1af -> 15 + 160 + 256

        -> 431

    十进制 -> 二进制、八进制、十六进制:

        十进制数除以进制数得到的余数逆序排列

   二进制 八进制 十六进制:

        八进制1位对应二进制3位

        十六进制1位对应二进制4位

2.程序如何在C语言中被运行起来?

    程序(外存中)

    执行(加载到内存中)

    程序运行结束(回收内存空间)

3.数字在内存中的存储:

    正数在计算机中存放对应的二进制数

    负数在计算机中存放补码

        1.原码

        2.反码  

        3.补码

        4.内存数据

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

         

        2.浮点数类型:

            float

            double

            3.1415926

            5.12

            所有的浮点数类型均为有符号类型,没有无符号类型的概念

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

float     )     4个字节         -3.4*10^38 - 1.18*10^-38             1位符号位 + 8位指数位 + 23位尾                                                   1.18*16^-38 - 3.4*10^38

  单精度浮点数类型(最多表示6-8位有效数)

double      8个字节         -1.80*10^308 - 2.23*10^-308          1位符号位 + 11位指数位 + 52位尾数                                             2.23*10^-308 - 1.80*10^308

双精度浮点数类型(最多表示12-14位有效数字)

            浮点数 -> 二进制形式 -> 科学计数法转换 -> 小数点后存入尾数位中 -> 指数位+偏移数(float:127 double:1023)以二进制形式存入指数位中

            IEEE754

            和整数存储方式完全不同

        3.字符型:

            char

            a .. z

            A .. Z

            # ? ..

        ASCII码表:

            字符和数字的对应关系

 名称                    内存空间大小          值域范围       存储方式

unsigned char      1个字节                  0 - 255          存储字符在ASCII码表中对应数字的二进制形式

 signed char         1个字节                 -128 - 127

      4.逻辑类型:

            bool

名称                      内存空间大小            值域范围                存储方式

 泊尔类型 bool       1个字节                 true                            1

                                                           false                            0

       在C语言中所有的非0值均为逻辑真值,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        八进制常量     (0代表八进制)

        0x1a        十六进制常量 (0x代表十六进制)

        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;

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值