Day02 郝斌C语言自学视频之C语言编程预备知识

这篇笔记主要内容是简单介绍一些基本的计算机知识,包括基本硬件、数据类型、进制等。阅读本文大概需要 5 分钟。

1. CPU、内存条、硬盘、显卡、主板、显示器之间的关系

推荐书籍《计算机是怎样跑起来的》《程序是怎样跑起来的》或者B站的《计算机科学速成课》。

CPU:计算处理。

内存条:硬盘和CPU的桥梁。

硬盘:存储。

显卡:处理图像。

主板:载体。

显示器:屏幕。

一段代码的运行,首先要把代码从硬盘加载到内存,CPU再处理内存中的数据,把结果输出到显示屏,或者经过内存在保存回硬盘。图像的话会交给显卡处理。主板是安放显卡、CPU等器件的载体。

2. HelloWorld是程序如何运行起来的

这里我推荐一本书《程序是怎样跑起来的》。它日本人写的一本书,非常很好,通俗易懂。

对于C语言而言就是:编译–>链接–>运行

# include <stdio.h>

int main(void)
{
    printf("欢迎来到C世界!\n");
    
    return 0;
}

3. 什么是数据类型

3.1 基本类型数据

整数

整型——int,4个字节。

短整型——short int,2个字节。

长整型——long int,8字节。

浮点数(实数)

单精度浮点数——float,4个字节。

双精度浮点数——double,8个字节。

字符

单字符——char,1个字节。

字符串——一系列字符的组合。

3.2 复合类型数据

结构体(用的不多),枚举(重要),共用体(淘汰了)。

4. 什么是变量

变量的本质就是内存中的一段存储空间

# include <stdio.h>

int main(void)
{
    int i;

    i = 3; // 3最终放在内存中,程序终止后3所占空间被释放
    printf("i = %d\n", i);

    return 0;
}

5. CPU、内存条、操作系统之间的关系

推荐书籍《计算机是怎样跑起来的》《程序是怎样跑起来的》或者B站的《计算机科学速成课》。
这里非常有意思,不断地抽象的过程。

6. 变量为什么必须初始化

初始化即赋值的意思。原因是操作系统不会对于回收的内存空间进行初始化,会使得内存中存在原来遗留的垃圾数据,所以变量赋值需要初始化,清除原来的垃圾数据。

# include <stdio.h>

int main(void)
{
    int i;

    printf("i = %d\n", i);

    return 0;
}

7. 如何定义变量

格式:

数据类型 变量名;

变量名 = 要赋的值;

举例:

int i = 3; // 等价于 int i; i = 3;
int i, j; // 等价于 int i; int j;
int i, j = 3; // 等价于 int i; int j; j = 3;
int i = 3, j = 5; // 等价于int i; int j; i = 3; j = 5;
int i, j; i = j = 5; // 等价于 int i, j; i = 5; j = 5;

8. 什么是进制

进制:逢几进一。

十进制:逢十进一。

二进制:逢二进一。

八进制:逢八进一。

十六进制:逢十六进一。

这里推荐B站计算机速成课,二进制背后的故事非常值得思考,电流的有无,抽象的思维。

举例:

# include <stdio.h>

int main(void)
{
    int i = 12;

    printf("i = %d\n", i);
    printf("i = %x\n", i);
    printf("i = %X\n", i);
    printf("i = %o\n", i);  
     
    /*
        printf的用法
        %d表示以十进制输出
        %x或者%X表示以十六进制输出,x和X的区别在于大小写表示
        %o表示以八进制输出
    */

    return 0;
}

9. 常量在C语言中是如何表示的

9.1 整数

十进制:传统写法。

十六进制:前面加0x或者0X。

八进制:前面加0,注意是数字0不是字母o。

9.2 浮点数

传统的写法

  • float x = 3.2; // 传统

科学计数法

  • float x = 3.2e3; // x的值是3200
  • float x = 123.45e-2; // x的值是1.2345

9.3 字符

单个字符用单引号括起来。'A’表示字符A,'AB’错误, "AB"正确。

字符串用双引号括起来。"ABC"正确,"A"也正确,因为’A’ '\0’的组合。

# include <stdio.h>

int main(void)
{
    float x = 123.45e-2; // x的值是1.2345

    printf("%f\n", x);

    return 0;
}

10. 常量是以什么样的二进制代码存储在计算机

这是编码问题,本质是数学里面的映射问题。

整数是以补码的形式转化为二进制代码存储在计算机中的。

实数是以IEEE754标准转化为二进制代码存储在计算机中的。

字符的本质实际也是与整数的存储方式相同。

11. 代码规范化

推荐书籍 林锐《高质量C/C++编程》

代码规范化好处:

  1. 代码整洁,便于阅读;

  2. 便于团队合作

简而言之,跟着郝斌老师敲就对了。

# include <stdio.h>

int main(void)
{
    // 定义变量

    // 对变量进行操作

    // 输出值

    return 0;
}

12. 什么是字节

存储数据的单位,并且是硬件所能访问的最小单位。

1 字节 = 8位

1K = 1024字节

1M = 1024K

1G = 1024M

13. 不同类型数据之间的相互赋值的问题

掌握补码的知识。

暂不考虑。

14. 什么是ASCII(重要)

ASCII不是一个值,而是一种规定,ASCII规定了不同的字符使用哪个整数值去表示。本质就是一个映射关系。

它规定了:

‘A’ – 65

‘B’ – 66

‘a’ – 97

‘b’ – 98

例1:

# include <stdio.h>

int main(void)
{
    char ch = 'A'; // OK
    // char ch = "AB"; //error 因为"AB"是字符串,我们不能把字符串赋给单个字符
    // char ch = "A"; // error

    // char ch = 'AB'; // 'AB'是错误的
    // char ch = 'B'; // error,因为ch变量已经在5行被定义,这样会导致变量名被重复定义。
    ch = 'C'; // OK

    printf("%c\n", ch);

    return 0;
}

例2:

# include <stdio.h>

int main(void)
{
    char ch = 'b'; // 

    printf("%d\n", ch);

    return 0;
}

15. 字符的存储[字符本质上与整数的存储方式相同]

同14。

说明

  1. 本学习笔记整理自B站郝斌老师的《郝斌C语言自学教程》片段P14-P30

  2. 笔记中所有代码均在windows10操作系统,在VSCode编辑器中通过测试。具体VSCode C语言开发环境搭建方法请参照我的另一篇CSDN博客——Windows10下利用Visual Studio Code搭建C语言开发环境

后记

如果对你有所帮助,欢迎关注我的公众号。这个公众号主要是慢慢分享和记录自己学习编程的笔记,比如:C,Python,Java等。后续也会分享自己面试以及在职场上的成长心得。

在这里插入图片描述

发布了128 篇原创文章 · 获赞 157 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_27283619/article/details/104533943