首页 > 其他分享 >学C学到秃头!

学C学到秃头!

时间:2024-07-14 11:28:00浏览次数:10  
标签:学到 变量 int 数据类型 C语言 类型 字节 秃头

一、学习C语言前需要了解的常识

1.什么是计算机?

        计算机(computer)俗称电脑,是一种可以进行数值运算又可以进行逻辑运算的高速计算的电子计算机器。目前公认世界上第一台电子计算机是1946年在美国宾夕法尼亚大学诞生的ENIAC(Electronic Numerical Integrator And Calculator)。

2.计算机的组成

        计算机由硬件系统和软件系统组成。

        硬件系统主要由五部分构成:运算器、控制器、存储器、I/O设备(输入设备和输出设备)。CPU(Central Processing Unit),又称中央处理器,主要由运算器,控制器,寄存器构成。CPU是计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。现代计算机中CPU均采用冯诺依曼体系结构,在该体系结构下,程序和数据统一存储,指令和数据需要从同一存储空间存取,经由同一总线传输,无法重叠执行。

        软件系统主要分为系统软件和应用软件。系统软件一般包括操作系统、语言处理程序、数据库系统和网络管理系统。应用软件一般分为两类,一类是为特定需要开发的实用型软件,另一类是为了方便用户使用计算机而提供的一种工具软件。

3.什么是计算机程序?

        计算机程序是一组计算机能识别和执行的指令集。通俗的来讲就是人们通过计算机语言告诉计算机想要它做什么事,解决什么问题,如何工作等,每做一件事就是一条指令,而一条或多条指令的集合我们就称之为一个计算机程序。

指令:可以被计算机理解并执行的基本操作指令。

程序:一组计算机能识别和执行的指令。一个特定的指令序列用来完成一定的功能。

软件:与计算机系统操作有关的计算机程序、规程、规划,以及可能有的文件、文档及数据。

4.什么是计算机语言?

        计算机语言是一种人工设计的语言,用于人与计算机之间的信息交流。计算机语言主要分为机器语言、汇编语言和高级语言。

        机器语言:计算机能直接识别和接受的二进制代码称为机器指令。机器指令的集合就是该计算机的机器语言

        特点:难学,难记,难检查,难修改,难以推广使用。依赖具体机器难以移植。

B8  7F 01

BB  21 02

03   D8

B8  1F 04

2B  C3

        汇编语言:机器语言的符号化。用英文字母和数字表示指令的符号语言

        特点:相比机器语言简单好记,但仍然难以普及。汇编指令需通过汇编程序转换为机器指令才能被计算机执行。依赖具体机器难以移植。

MOV  AX  383

MOV  BX  545

ADD   BX  AX

MOV  AX  1055

SUB    AX  BX

        高级语言:更接近于人们习惯使用的自然语言和数学语言。

        特点:功能强大,不依赖于具体机器。用高级语言编写的源程序需要通过编译程序转换为机器指令的目标程序

S=1055-(383+545)

        高级语言的发展,由最原先的非结构化,再到结构化,再到目前面向对象的语言。在发展到结构化语言时就已规定程序必须由具有良好特性的基本结构(顺序结构、选择结构、循环结构)构成,程序中的流程不允许随意跳转,程序总是由上而下顺序执行各个基本结构。这样编写出来的程序结构清晰,易于编写、阅读和维护。

5.什么是C语言?

        C语言是一门通用计算机高级语言,被广泛应用于底层开发,是1972-1973年间由D.M.Ritchie在B语言的基础上设计出了C语言。最初的C语言只是为了描述和实现UNIX操作系统提供一种工作语言而设计的。随着UNIX的日益广泛使用,C语言也迅速得到推广。1978年以后,C语言先后移植到大、中、小和微型计算机上。C语言便很快风靡全世界,成为世界上应用最广泛的程序设计高级语言。

        C语言具有以下特点:

        1.语言简洁、紧凑、使用方便、灵活。

        2.运算符丰富。

        3.数据类型丰富。

        4.有结构化的控制语句(用函数作为程序的模块单位,便于实现程序的模块化,而C语言是完全模块化和结构化的语言)。

        5.语法限制不太严格,程序设计自由度大。

        6.允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作(因此C语言既具有高级语言的功能,又具有低级语言的许多功能,可用来编写系统软件)。

        7.程序可移植性好。

        8.生成目标代码质量高,程序执行效率高。

二、C语言程序

1.如何新建一个C语言项目

        还未撰写。

2.如何创建一个C语言文件

        还未撰写。

3.C语言程序的构成

C 程序主要包括以下部分:

  • 预处理指令
  • 函数
  • 变量
  • 语句&表达式
  • 注释

        下面来看最简单的C语言程序

要求:在屏幕上输出:This is a C program.

#include <stdio.h>                          //这是编译器预处理指令
int main()                                  //定义主函数
{                                           //函数开始的标志
    printf("This is a C program.\n");       //输出所指定的一行信息
    return 0;                               //函数执行完毕时返回函数值0
}                                           //函数结束的标志

运行结果

程序分析:

        在使用函数库中的输入输出函数时,编译系统要求程序提供有关此函数的信息,程序第1行“#include <stdio.h>”的作用就是用来提供这些信息的。stdio.h是系统提供的一个文件名,stdio是standard input & output的缩写,文件后缀.h的意思是头文件(header file),因为这些文件都是放在程序各文件模块的开头的。输入输出函数的相关信息已事先放在stdio.h文件中。

        main是函数的名字,表示“主函数”。每一个C语言程序都必须有一个main函数。main前面的int表示此函数的类型是int类型(整形),即在执行主函数后会得到一个值(即函数值),其值为整形。return 0;的作用是当main函数执行结束前将整数0作为函数值,返回到函数调用处。而函数体由花括号{}括起来。

        printf是C编译系统提供的函数库中的输出函数。printf函数中双引号内的字符串″This is a C program.″按原样输出。\n是换行符,即在输出″This is a C program.″后,显示屏上的光标位置移到下一行的开头。 每个语句最后都有一个分号,表示语句结束。

        //表示从此处到本行结束是“注释”,用来对程序有关部分进行必要的说明。在写C程序时应当多用注释,以方便自己和别人理解程序各部分的作用。在程序进行预编译处理时将每个注释替换为一个空格,因此在编译时注释部分不产生目标代码,注释对运行不起作用。注释只是给人看的,而不是让计算机执行的。

4.注释

        由上一个程序可以看出,程序在编译运行时,代码中所有注释的内容都会被编译器跳过,不会被编译器执行。那什么是注释呢?注释是在所有计算机语言中都非常重要的一个部分,通俗来讲就是注解、解释的意思,注释可以是任何符号文字,它可以被用在某一段或者某一行代码用来解释其含义,方便程序后期的维护,提高程序的可读性。因此,一个程序员必须要具备勤写注释的良好习惯。

        注释一共分为两种,单行注释(//  )和多行注释(/*  */)。

        以//开始的是单行注释。这种注释可以单独占一行,也可以出现在一行中其他内容的右侧。此种注释的范围从//开始,以换行符结束。如果注释内容一行内写不下,可以用多个单行注释。

        以/*开始,以*/结束的块式注释是多行注释。这种注释可以包含多行内容。它可以单独占一行(在行开头以/*开始,行末以*/结束),也可以包含多行。编译系统在发现一个/*后,会开始找注释结束符*/,把二者间的内容作为注释。

注意:在字符串中的//和/*都不作为注释的开始。而是作为字符串的一部分。

#include <stdio.h>
int main()
{
	printf("//Hello World!//\n\n");
	printf("/*How are you?*/");
    return 0;
}

运行结果:

三、关键字和标识符

1.什么是关键字?

        C语言关键字(Keywords)是C语言编程语言中预先定义并保留的标识符,它们具有特定的含义,并用于构成C语言程序的基本结构和功能。在开发工具中,这些关键字会显示出与其他代码不一样的颜色。关键字不能用作变量名、函数名或其他标识符的名称。请注意,关键字是区分大小写的,并且通常以小写字母开头(除了_Bo01,它可以是Bo01或bo01)。在编写C语言程序时,应避免使用这些关键字作为标识符的名称。

2.关键字的分类(32个)

数字类型关键字:用于声明变量的数据类型。

类型关键字用途
基本数据类型关键字char定义字符型类型变量
int定义整型类型变量
float定义浮点型类型变量(单精度)
double定义浮点型类型变量(双精度)
类型修饰关键字short修饰int,声明短整型类型数据,可省略被修饰的int
long修饰int,声明长整型类型数据,可以省略被修饰的int
signed修饰整形类型数据,声明有符号数据类型
unsigned修饰整形类型数据,声明无符号数据类型
复杂类型关键字struct结构声明体
union共用声明体
enmu枚举声明

控制语句关键字:用于控制程序的流程。

类型关键字用途


 

分支结构


 

ifif条件语句
else条件语句否定分支(与if配合使用)
switch开关语句(与case、default配合使用)
case开关语句中的分支标记
default开关语句中的“其他”分支

循环结构

 

forfor循环语句
whilewhile循环语句
dodo……while循环语句

跳转结构

 

continue跳过语句(配合循环结构使用)
break跳出语句(配合循环结构以及switch使用)
goto(不常用)无条件跳转语句
return返回语句,用于返回特定值

存储类型关键字:用于定义变量的存储类别。

关键字用途
auto指定为自动变量
register指定为寄存器变量
static指定为静态变量
extern指定对应变量为外部变量
const指定变量为只读变量
volatile指定变量为易变变量

特殊用途关键字:具有特殊用途的关键字。

关键字用途
void空类型(不能定义变量,修饰函数的参数或返回值,表示没有)
sizeof计算数据类型长度
typedef声明类型别名

3.标识符

        C语言中的标识符(ldentifier)是用于命名变量、函数、类型、标签和其他用户定义项的名称。通俗的来讲就是方便程序员区分程序中的众多函数,给这些不同的函数起了不同的名称,这些名称就是标识符。这些标识符在C语言中是由程序员自行选择的,但必须遵循一些基本规则,以便编译器能够正确解析它们。

标识符的命名规则:

        一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。因此,在 C 中,Manpowermanpower 是两个不同的标识符。C语言的标识符命名规则可以总结为以下几点。

1.只能由数字、字母、下划线组成。

2.不能以数字开头。

3.不能使用C语言的关键字。

4.好的命名习惯要做到见名知义

 (1)大驼峰命名法:每个单词首字母大写。例如:MyFirstName

 (2)小驼峰命名法:从第二个单词开始,首字母大写。例如:myFirstName

 (3)下划线命名法:每个单词之间用_连接。例如:my_first_name

以下列出一些标识符:

_name(合法)、1name(不合法)、Adress(合法)、MyName(合法)、last-test(不合法)、first#test(不合法)、final_test(合法)

四、数据类型

1.字节和地址

        在了解C语言的数据类型之前,需要先了解什么是计算机的字节和地址。

  • 位(bit):简写为“b”,读作比特,是计算机中最小的数据单位,使用二进制,只能表示0和1。
  • 字节(Byte):又称字节单元或字节存储单元,是计算机信息中用于描述存储容量和传输容量的一种计量单位,是计算机技术中最小的可操作存储单位一个字节由8位组成,从0000 0000到1111 1111,表示0~255之间的数字,也可以表示单个字符。计算机访问内存的基本单位是字节。
名称简写换算
字节B1B=8b(bit)
千字节KB1KB=2^10B=1024B
兆字节MB1MB=2^10KB=1024KB
吉字节GB1GB=2^10MB=1024MB
太字节TB1TB=2^10GB=1024GB
拍字节PB1PB=2^10TB=1024TB
………………

  • 地址:为了有效地使用内存,将内存划分为一个个小的内存单元,每个内存单元的大小是一个字节。为了能够快速有效地访问每个内存单元,就给这些内存单元进行了编号,这些编号就叫做该内存单元的地址。
  • 地址编号:在32位平台下,内存单元的地址是由32位的二进制数(即8位十六进制数)依次编号。所以内存单元共有2^32个,而每一个内存单元保存1个字节的内容。

        C语言中定义变量,都是在程序运行起来后在内存中开辟空间。

2.C语言数据类型

        在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。通俗来说一个C程序在内存中运行过程中会产生各种各样的临时数据,为了方便数据的运算和操作,C语言对这些数据进行了分类,提供了丰富的数据类型。

        C语言的数据类型一共分为四大类:基本数据类型、枚举类型、空类型、派生类型。

类型描述
基本数据类型

它们是算术类型,包括整型(int)、字符型(char)、浮点型(float)和双精度浮点型(double)。

枚举类型

它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。

空类型

也称为void类型。表示没有值的数据类型,通常用于函数返回值。

派生类型

包括数组类型、指针类型和结构体类型。

这里先介绍一下基本数据类型,它一共分为两种:数值类型和字符类型。其中数值类型又分为整型和浮点型。

类型存储大小值范围
字符类型char1字节-128~127或0~255




整形


 
unsigned char1字节0~255
signed char1字节-128~127
int2或4字节

-32,768~32,767 或

-2,147,483,648~2,147,483,647

unsigned int2或4字节

0~65,535 或

0~4,294,967,295

short2字节-32,768~32,767
unsigned short2字节0~65,535
long4字节-2,147,483,648~2,147,483,647
unsigned long4字节0~4,294,967,295

浮点型
 
float(单精度)4字节1.2E-38~3.4E+38
double(双精度)8字节2.3E-308~1.7E+308
long double(双精度)16字节3.4E-4932~1.1E+4932

void 类型指定没有可用的值。它通常用于以下三种情况下:

序号类型与描述
1

函数返回为空:
C 中有各种函数都不返回值,或者可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status);

2

函数参数为空
C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void);

3

指针指向 void
类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。

3.类型转换

        既然已经定义了数据类型,C语言为什么还要进行类型转换?那是因为计算机硬件在进行算术操作时,要求各操作数的类型具有相同的存储位数以及一样的存储方式,所以就出现了类型转换。

        C 语言中有两种类型转换:

  • 隐式类型转换:隐式类型转换是在表达式中自动发生的,无需进行任何明确的指令或函数调用。它通常是将一种较小的类型自动转换为较大的类型,例如,将int类型转换为long类型或float类型转换为double类型。隐式类型转换也可能会导致数据精度丢失或数据截断。

        char类型数据转换为int类型数据遵循ASCII码中的对应值。

注意: 1、字节小的可以向字节大的自动转换以保证精确度不降低,但字节大的不能向字节小的转换。

            2、char类型可以转换为int,int可以转换为double,char可以转换为double,但反过来不行。

#include<stdio.h>
int main()
{
	//自动类型转换  隐式类型转换 :编译器自动转换
	int a = 11;
	double b = a;                 //将a的值11,转换为11.0000,再给b赋值 
	printf("b = %lf\n", b);
	printf("a = %d\n", a);
	printf("%lf\n", 12 / 3);      //异常结果0.000000
	printf("%lf\n", 12 / 3.0);    // 其中一个必须是浮点数才可以
	return 0;
}

运行结果如下:

自动类型转换:字节小的向字节大的转——隐式:编译器自动完成

 (1)算术转换:进行算术运算时,不同类型的数据必须转换成同一数据类型才能运算。在进行运算时, 以表达式中最长类型为主,将其他数据类型均转换为该类型。

 (2)赋值转换: 赋值转换 //进行赋值操作时,赋值运算符右边的数据类型必须转换成赋值号左边的类型, 若右边的数据类型的长度大于左边,则要进行截断或舍入操作。

 (3)输出转换:在程序中,用printf以指定格式输出时,当要输出的数据类型与指定类型不符合时,会进行类型转换。

算术转换示例如下:

#include<stdio.h>
int main()
{
	int a = 10;
	double b = 3.14;
	printf("a+b=%lf\n", a + b);       //13.140000
	char ch = 'a';
	printf("a+12=%d\n", ch + 12);     //109
    return 0;
}

赋值转换示例如下:

#include <stdio.h>
int main()
{
    char c = 'b';
    int i, result;
    i = 2;
    double d = 1.5;
    float m = 1.20000;               //从“double”到“float”截断    1.20000f
    result = c / i + (d * m);        //分析result的类型  
                                     //c/i=98/2=49
                                     //1.5*1.2=1.8
                                     //49+1.8= 50(因为变量result被定位为整型) 
    printf("result = %d\n", result); //result=50 
}

输出转换示例如下:

#include <stdio.h>
int main()
{
int a = 9;
printf("%f\n", a);   //出错    0.000000

float b = 90.5f;
printf("%d\n", b);   //出错    0

long c = 90;
printf("%d\n", c);   //正常转换

char ch = 'a';
printf("%d\n", ch);  //正常
      
long d = 8000;       //较长类型往较短类型转换时,不能超出较短类型的范围   
printf("%d\n", d);   //正常    8000

return 0;
}
  • 显式类型转换:显式类型转换需要使用强制类型转换运算符(type casting operator),它可以将一个数据类型的值强制转换为另一种数据类型的值。强制类型转换可以使程序员在必要时对数据类型进行更精确的控制,但也可能会导致数据丢失或截断。
#include<stdio.h>
int main()
{
	double d = 3.14159;
	int i = (int)d; // 显式将double类型转换为int类型
	printf("i=%d", i);
	return 0;
}

运行结果如下:

在使用强制转换时应注意以下问题:

  • 数据类型和表达式都必须加括号, 如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。
  • 转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。
  • 强制转换后的运算结果不遵循四舍五入原则。
#include<stdio.h>
int main()
{
//强制类型转换  语法:(类型)(变量)
        int a = 3;
        int b = 2;
        printf("%lf\n", (double)(a / b));   //1.000000  先转整再转double
        printf("%lf\n", (double)a / b);     //1.500000
        printf("%lf\n", (double)(10 / 3));  //3.00000000  出错
        printf("%lf\n", (double)10 / 3);    //3.333333

//ASCLL表中  字符最大是127(字符占一个字节,8位  最大值是127)
        int c = 100;
        char d = (char)c;
        printf("%d\n", d);                  //正常


        int e = 200;                        //如果取大于127的值就会出错,数据可能会丢失
        char f = (char)e;
        printf("%d\n", f);                  //数据丢失   -56

        return 0;
}

五、变量和常量

1.什么是变量?

        变量,从字面角度上来看就是可以变化的量。在生活中树的高度、人的身高、行驶中汽车的速度等,数值不固定的数据。在C语言中,变量可以通俗理解为哆啦A梦的口袋,可以将不同类型的东西装进去也可以拿出来用。严格意义上来说,变量代表一个有名字的、具有特定属性且用来存储和标记数据的容器,可以根据数据的类型和名称进行访问和修改。

2.变量的定义

        在C语言中,定义一个变量就是为这个变量分配存储空间,还可以为变量指定初始值。程序中,变量有且仅有一个定义。那么如何去定义一个变量呢?定义一个变量的语法格式如下:

变量类型  变量名称          int  a;                //定义一个变量名称为a的整型变量

                                         double  b;        //定义一个变量名称为b的浮点型变量

                                         char c,d,e;       //定义三个变量名称分别为c,d,e的字符型变量

        我们通常定义一个变量的目的是为了去使用这个变量,只有先定义了变量系统才会为其分配存储空间去存储数据。由第四章学习了什么是数据类型我们可以知道,在定义变量时首先要定义它所存储的数据是哪一种数据类型,也就是定义这个变量的变量类型,一旦定义了一个变量的变量类型,那么这个变量就只能存储这个类型的数据。其次要定义变量的变量名称,因为我们没法从偌大的存储空间取出我们想要的值,只有定义了变量名称系统才能根据变量名称从而找到存储空间中变量的地址,从而取出我们想要的值。变量名称的定义必须严格按照标识符的命名规则。

3.变量的赋值

        在定义好一个变量后我们就可以往这个变量里存储数据,也就是给变量赋值。首先看一下如何给一个变量赋值。

int  a;           //定义一个整形变量a

a=5;             //将5赋值给变量a

这里需要特别注意一点,a=5这条语句不是我们平常在数学运算中的a等于5,而是将右边的整型常量5赋值给左边的整型变量a。在赋值时,“=”的左边必须是变量,不能将这条语句写为10=b。

4.变量的初始化

        C语言中,变量的第一次定义我们称之为变量的初始化。定义一个变量时,如果不进行初始化,它会存储随机数、上次程序分配的存储空间,存数一些内容,“垃圾”或系统正在用的一些数据,也会使程序运行出不正确的结果。变量的初始化语法格式如下:

int  a;                     //先定义,后初始化

a=5;

int  b = 10;            //定时的同时初始化

int c,d=e=15;     //定义整型变量c,d,e的同时初始化变量d,e

5.如何对变量的值进行操作?

        当我们把一个值赋值给一个变量,如何去查看这个变量的值呢?我们使用printf函数输出一个或多个变量的值。

int a=5,b=10,c='A';

printf("a=%d,b=%d,c里面存储的字符是%c",a,b,c);        //a=5,b=10,c里面存储的字符是A

        当我们定义了一个变量并已经初始化它的值或已经赋过值,我们仍可以按照自己的需求对变量继续进行多次赋值,也可以将其他变量存储的值赋值给指定变量,每次赋值都会覆盖原来的值。

标签:学到,变量,int,数据类型,C语言,类型,字节,秃头
From: https://blog.csdn.net/m0_58274156/article/details/140341441

相关文章

  • 【AI大模型】应用开发基础,学到就是赚到!_ai大模型应用开发
    前言1、了解大模型能做什么2、整体了解大模型应用开发技术栈3、浅尝OpenAIAPI的调用AI全栈工程师:懂AI、懂编程、懂业务的超级个体,会是AGI(ArtificialGeneralIntelligence通用人工智能)时代最重要的人。知识体系AI学习方法论从三个方面学习:原理、实践和认知三......
  • 为什么定制人工智能让我对未来充满乐观,从创建自己的人工智能中学到了什么
    您是否曾经想过克隆自己?我不是指身体上的克隆,而是指技术上的克隆。提取您一生积累的专业知识和知识并将其“开源”。好吧,我就是这么做的!在此过程中我学到了很多东西。以下是我这样做的方法。推荐文章《如何微调NLLB-200模型以翻译新语言(教程含源码)》权重3《LLM......
  • 微调真的能让LLM学到新东西吗:引入新知识可能让模型产生更多的幻觉
    大型语言模型(llm)是在巨大的文本语料库上训练的,在那里他们获得了大量的事实知识。这些知识嵌入到它们的参数中,然后可以在需要时使用。这些模型的知识在培训结束时被“具体化”。在预训练结束时,模型实际上停止学习。对模型进行对齐或进行指令调优,让模型学习如何充分利用这些知识,......
  • 服务器被攻击后,我学到的知识...
    目录又被攻击了?事实还原怎样避免被攻击又被攻击了?前段时间每天早上都被阿里云的报警短信和邮件叫醒,给看一下记录。事实还原我当时以为是有几篇被其他博主转发了文章,导致被知名度(狗头)上升,被人盯上了。每天早上6、7点手机就开始报警。上一篇文章发出去后,也收到很多小伙伴的支......
  • 经过腾讯云这波故障,我想表扬的点和学到的职场保命法则。
    你好呀,我是歪歪。昨天分享了一下《腾讯云4月8日故障复盘及情况说明》,较为详细的描述了故障前后的具体情况。按照惯例,这种大公司的故障说明,歪师傅都是要好好看一下的。一来是看看有没有可以学习的地方,多从别人的事故中总结经验教训,学习避坑指南。二来还可以蹭个热点。表扬......
  • 捏妈妈的,学了两天的node.js才学到express,之前白雪了呗!
    Express的基本使用1、老样子,先导入constexpress=require(‘express’)2、然后创建一个服务器constapp=express()3、启动服务器app.listen(80,()=>{console.log('expressserverrunningathttp://127.0.0.1') }) 下面我们继续学习用法监听Get请求:可以使用app.g......
  • 第一次画pcb学到的知识
    第一次画pcb学到的知识1.Typec(6针)其中的CC1、CC2引脚为快充协议的引脚,用不到的时候串个5.1K的电阻接地s2.AMS117降压电路AMS1117芯片的输入电压都要一个10.1uf的电容,一般先接一个10UF的电容,再接100nf的电容,用于滤波。3.晶振电路晶振两边并联两个电容,叫做谐振电容,......
  • 毕业半年多了,回顾从大学到现在搞过的很有意思的开源项目
    毕业半年多了,回顾从大学到现在搞过的很有意思的开源项目回想当年,在高考结束后我的分数并不高,然后被调剂到了工业设计,再到后来感觉对计算机更感兴趣,于是对了很久的线努力转专业到了计算机,之后废了九牛二虎之力在大二一年修完了计算机专业大一大二两年的课程,到了大三开始搞事就开始......
  • 我在有限的时间里面学到了什么
    最近亲人去世了,我对自己浪费的时间感到羞愧,也对自己不能更快地成长感到难受。我在有限的时间里面跌跌撞撞走到现在,但回顾一下,感觉是起了个大早,但是赶了个晚集。最终还是一事无成,无论是财富还是事业,我仍然在缓慢积累经验。我后悔自己没在一毕业就像肖奈一样有一家伟大的创业公司,......
  • 从本次战疫,作为普通人可以学到的东西
    前人不忘,后事之师。从本次疫情的控制,可以学到什么?早发现,早隔离,早识别,早就诊。定位传染源,传播途径,传播方法,确定潜伏期,检测方法,确认病人症状。阻断传播途径:疑似和确诊分开。轻症和重症分开。区域间隔离。动员能力医疗物资,生产,运输,仓储,分发医院人力资源,医生,护士,护工,行政......