美文网首页
C语言基础

C语言基础

作者: YKDog | 来源:发表于2016-05-14 18:49 被阅读96次

    第1次学习总结

    Linux下的基本命令,基本数据类型,和数据以补码方式在计算机中存储。

    day1总结

    <a name = "1">手动编译过程</a>

    手动编译过程
    • 预处理:预处理相当于根据预处理命令组装成新的 C 程序,不过常以 i 为扩展 名。
    • 编 译:将得到的 i 文件翻译成汇编代码 .s 文件。
    • 汇 编:将汇编文件翻译成机器指令,并打包成可重定位目标程序的 O 文件。
      该文件是二进制文件,字节编码是机器指令。
    • 链 接:将引用的其他 O 文件并入到我们程序所在的 o 文件中,处理得到最终
      的可执行文件。

    <a name = "1">Linux的目录和分区</a>

    和之前的Windows电脑不同的是Linux打开之后没有发现类似C:/这样的盘符.这是因为Linux的分区是挂载到文件目录下的。文件目录描述的大致如下:

    目录 描述
    / 根目录
    /bin 做为基础系统所需要的最基础的命令就是放在这里。比如 ls、cp、mkdir 等命令;
    /boot Linux 的内核及引导系统程序所需要的文件
    /dev 一些必要的设备,比如声卡、磁盘等。
    /ect 系统的配置文件存放地.一些服务器的配置文件也在这里;比如用户帐号及密码配置 文件;
    /lib 库文件存放地。
    /media 可拆卸的媒介挂载点,如 CD-ROMs、移动硬盘、U 盘,系统默认会挂载到这里来。
    /mnt 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录
    /opt 可选的应用程序包
    /proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如 cpu、硬盘分 区、内存信息等)存放在这里。
    /root Root用户的工作目录
    /sbin 和 bin 类似,是一些可执行文件,不过不是所有用户都需要的,一般是系统管理所 需要使用得到的。
    /tmp 系统的临时文件,一般系统重启不会被保存。
    /usr 包含了系统用户工具和程序。
    /srv 该目录存放一些服务启动之后需要提取的数据

    如果一个分区没有挂载在目录中就不会被系统接收和识别。Linux下磁盘的分区和目录的关系如下:

    • 任何一个分区都必须挂载到某个目录上。
    • 目录是逻辑上的区分,分区是物理上的区分
    • 磁盘 Linux 分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。
    • 根目录是所有 Linux 的文件和目录所在的地方,需要挂载上一个磁盘分区。

    挂载外设

    挂载外设的步骤

    • 插入外设,输入命令fdisk -l来找到外部设备如:/dev/sdb1
    • 在挂载目录/mnt下 创建挂载的目标目录如:/mnt/usb
    • 挂载命令:mount /dev/sdb1 /mnt/usb/
    • 卸载:umount /mnt/usb/值得注意的是命名中卸载目标目录 而不是设备。

    <a name = "2">Linux终端常用命令</a>

    ls pwd cd touch mkdir rm cp mv find cat less head tail useradd gou passwd you su ifconfig ping setup

    <a name = "2">VIM教学</a>

    vimtutor 中有教学每天坚持两遍就好。

    使用中文版vimtutor -g zh

    关于vim的配置高亮缩进等

    在用户当前的家目录中,输入 vim ~/.vimrc 该文件是一个隐藏文件,如果没有则
    创建它,该文件中保存一些,vim 的常用配置。

    set nu            //代码显示行号
    syntax on         //关键词高亮显示
    set cindent       //c语法自动缩进
    set autoindent    //新行自动缩进 
    set shiftwidth=4  //缩进宽度4
    set tabstop=4     //tab键宽度4 
    set softtabstop=4 //制表符宽度4
    

    day2总结

    <a name = "2">流程图设计推荐</a>

    流程图设计的网站:www.processon.com

    <a name = "2">标识符的命名规则</a>

    • 只能由字母、数字、下划线、组成。
    • 不能以数字开头。
    • 不能使用关键字。
    • (记忆:如果数开头就会输(失败))
    • 注:main不是关键字。
    • 命名区分大小写。gou 与 GOU是不同。

    其他法则:1.驼峰法则 sumOfTwoNumber 2.下滑线 sum_of_two_number

    <a name = "2">补码</a>

    example1:1字节下2的原码 反码 补码是多少?

    正负不变的原则

    码型 表示值
    原码 0000 0010
    反码 0111 1101
    补码 0111 1110

    example2:以下代码是打印32 ~ 127的ASCII码。如果去掉unsiged就会死循环。

    int main(void){
        unsigned char ch;
        for (ch = 32; ch < 128; ch++) {
            printf("%3d = %c\n", ch, ch);
        }
    }
    

    原因:当改为char时候。变为有符号数, 补码会用来表示符号。ch = 127 127(补码形式0111 1111) < 128成立 打印
    ch++ ch = 128(补码形式1000 0000 原码:-1000 0000 = - 128) 这样就死循环了。比较时任是比较原码值的大小。变化的时候正负不变 符号位设置为0;补码是模的概念, 而模是一个循环。满了就会回到起点。

    补码 表示值
    1111 1111 -1
    ---- ----
    1000 0001 -127
    1000 0000 -128
    0111 1111 127
    0111 1110 126
    ---- ----
    0000 0010 2
    0000 0001 1
    0000 0000 0

    <a name = "3">基本数据类型</a>

    难点分析:浮点数的表示方法

    存储示意图

    比如32位要存储0.5这个数字。

    0.5 = 1 * 2 -1

    • 符号位 0
    • 阶码 = 127 + (-1) = 126 即:0111 1110
    • 尾数 = 只存储1.0后的部分,因为个位数一定是1.所以存储0。 即:0000000 00000000 00000000
    • 故总的表示为:0 0111 1110 0000000 00000000 00000000

    同理125.5的表示
    125二进制表示形式为1111101,小数部分表示为二进制为 1,则125.5二进制表示为1111101.1,由于规定尾数的整数部分恒为1,则表示为1.1111011*26,阶码为6,加上127为133,则表示为10000101,而对于尾数将整数部分1去掉,为1111011,在其后面补0使其位数达到23位,则为11110110000000000000000
    则其二进制表示形式为 0 10000101 11110110000000000000000,则在内存中存放方式为:

    01000010   高地址
    11111011
    00000000
    00000000   低地址
    

    由上分析可知float型数据最大表示范围为

    1. 1111111 11111111 11111111 x 2 127= 3.4 x 1038

    难点分析:浮点数的精度是一个范围!!???

    比如要表示0.1 到0.9 九个小数。精度到0.1至少需要9个开关,也就是9bit,即4个字节至少。所以4个字节的精度是3~4位。有可能精确到4位表示一些数,但是不能全部全表示所以不能全达到4位。

    所以在23个尾数字节的存储情况下, 可以表示 223 种可能。
    如果要达到精确到0.00 0001 大概需要99 9999种可能。223 = 838 8608 > 99 9999 所以足够精确到精确到 6 位。但是如果精确到 7 位就必须 999 9999种可能。然而开关 838 8608不够。所以精度是6~7位。

    <a name = "转义字符">转义字符</a>

    ASCII 0~127的范围

    常见转义字符的

    转义字符 意义
    \n 换行
    \r 回车移到本行开头
    \t 水平制表,调到下一个TAB缩进处
    \|\
    ' '
    \" "
    %% %

    比如:

    printf("I like \"football\"\n");
    printf("%d%%\n", 95);
    

    输出:
    I like "football"

    95%

    相关文章

      网友评论

          本文标题:C语言基础

          本文链接:https://www.haomeiwen.com/subject/vptvrttx.html