嵌入式培训负债2w的第一周 上篇

 1.C语言配置详情

Vscode下载地址

https://code.visualstudio.com/icon-default.png?t=N7T8https://code.visualstudio.com/vsCode 全称 Visual Studio Code,是微软出的一款轻量级代码编辑器, 免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、版本管理GIT等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及 Linux。

 

vsCode打开大文件启动特别快,几乎跟纯编辑器无异,这种丝滑感是vsCode登顶全球编程类工具顶流的重要原因,它受欢迎的另一个杀手锏是其无比丰富的插件库,vsCode本质上是个框,一个大大的框,什么都能往里装,我们能想到的几乎任何功能,都能找到vsCode支持的插件,可以完全定制我们自己喜欢的功能。

 

安装部署cygwin

Cygwin是一个在windows平台上运行的类 UNIX 模拟环境,是cygnus solutions公司开发的自由软件。它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。

下载

cygwin64icon-default.png?t=N7T8https://www.weiyun.com/disk/folder/d32dc02d1f91051951134e0f014d251a

解压

获取cygwin64解压之后得到的bin文件夹的路径(不能含有中文),例 如:

设置环境变量

将上述路径设置到系统环境变量当中。依次点击“我的电脑”

“属性”,“高级系统设置”,弹出一下窗口后,点击“环境变量”

在弹出的窗口中,选择系统变量中的 Path 环境变量,点击编

辑、新建一个路径,将 cygwin\bin 所在的路径(不能含中文)

加到 Path 环境变量中,如下图所示:

注意,在 Windows7 以前的老系统中,点击环境变量 Path 的编辑按钮后弹出的输入框比较小,而且里面的各个路径是用英文分号分开,将 cygwin/bin 所在路径加入变量值即可,如下图所示:

Windows-7 的配置环境变量的界面

  1. 测试 按win+r打开运行窗口,输入cmd打开命令终端,输入gcc -v测试配置是否生效:

安装C/C++插件

vsCode的所有插件,都可以在左侧栏的“Extension(扩展)”中直接安装,如下图所示:

在插件库中输入C/C++,就可以看到所需安装的插件,C/C++插件主要提供命令推理、自动补齐、语法高亮等功能,如下图所示:

在vsCode插件库中找到C/C++插件

一般而言,直接点击“Install”并重启 vsCode 即可,但有些时候可能会因为网络问题而导致无法自动下载,使得安装失败,比如出现如下情况:

插件下载卡顿

这时可以通过离线的插件包到本地电脑安装:

  • 点击下载C/C++离线插件包:cpptools-win32.vsix

  • 按 ctrl+shift+p 打开 vsCode 命令面板,输入 install,点击 “扩展:从 VSIX 安装:

离线安装 C/C++ 插件

安装 Code Runner 插件

为了更加方便地使用 vsCode,安装 Code Runner 插件可以一键编译和运行,在 vsCode 的扩展侧栏中输入 run 即可看到该插件,如下图所示:

安装 Code Runner 插件

注意: Code Runner默认没有在终端输入输出,这可能会在需要使用终端输入输出的程序中产生一些不必要的困扰,为了方便,一般可配置该插件输入输出为终端:

配置 Code Runner

使用vsCode

在部署好了 cygwin、C/C++、Code Runner 等增强插件之后,就可以在 vsCode 中愉快地编辑编译C语言程序了,具体步骤如下:

启动

启动 vsCode 并打开新窗口,点击打开文件夹。或者可以直接将文件夹拖进 vsCode。

直接将文件夹拖进 vsCode 即可开始编程

 创建源代码

点击左侧栏的新建文件,开始编程程序:

新建文件

 编译程序

由于已经安装了 Code Runner 插件,因此可以点击编辑框右上角的三角形来一键编译和运行:

一键运行

运行程序时自动展开的是终端调试窗,可以通过快捷键 ctrl + ` 来打开和关闭。另外,除了一键编译运行之外,也可以在终端中使用命令来分开控制编译和运行,在终端中使用如下指令来进行操作:

# 编译程序
gcc example.c -o example

# 运行程序
./example

用命令的方式编译和运行程序

由于前面过于简单故我们开始从数据类型开始讲

2.数据类型

数据类型是什么 为什么会有数据类型?

数据类型的分类

1.整型(短整型,整型,长整型,长长整型,无符号短整型,无符号整型,无符号长整形,无符号长长整型)
2.字符
3.浮点
4.字符串

什么是数据?

被称为有用的信息则被称为数据.

数据则是如何存入到内存中的呢?

cpu 不认识c语言只认识0or1 如:数字10 要存入到cpu中则需要转成二进制1010才能存入

故cpu只认二进制

字节(byte B):计算机存储容量的一种单位

比特位(bit) :二进制数,cpu计算的基本单位

  • 二进制数 0 1

    • 1字节 = 8位

    • 1个千字节(KB) = 1024字节

    • 1M = 1024KB

    • 1G = 1024M

    • 1T = 1024G

2.1整型

说白了整型就是整数 我们如何来存入呢?

我们需要输入关键字int 然后进行定义一个变量a or 其他你喜欢的字母来进行存储你给a存入的整数.我们定义的变量a其实就是在内存中开辟了一块空间而这块空间则是int型则为四个字节,故这四个字节有一定的取值范围为-2147483648~2147483647,如果超过这个范围则为内存泄漏也就是越界

int有四个修饰符如:short  long  longlong  unsigned

  • short:用来缩短整型变量的尺寸,减少取值范围并节省内存,称为整型。

  • long:用来增长整型变量的尺寸,增大取值范围并占用更多的内存,称为长整型

  • long long:用来增长整型变量的尺寸,增大取值范围并占用更多的内存,称为长长整型

  • unsigned:用来去除整型变量的符号位,使得整型变量只能表达非负整数

short int a; // 短整型 %hd  half
long int b; // 长整型 %ld
long long int c; // 长长整型 %lld

unsigned int e; // 无符号整型 %u

unsigned short int f; // 无符号短整型 %hu
unsigned long int g;  // 无符号长整型 %lu
unsigned long long int h; // 无符号长长整型 %llu

如用了修饰符则关键字就可省略

格式控制符

  • int 整型:%d

  • short整型:%hd,h代表half,即一半的存储字节

  • long整型:%ld

  • long long整型:%lld

  • 显示不同进制的前缀 : %#o、%#x

  • 符号位:

    • 有符号的整型数据,首位为符号位,0表示正数,1表示负数。

    • 无符号的整型数据,没有符号位

数据类型的取值范围

unsigned char 0~255(1111 1111)
char -128... + 127(0111 1111)

short -32768~32767
unsigned short 0~65535(1111 1111 1111 1111) 2^16-1
unsigned int 0... 2^32-1 4294967295

2.2编码形式

原码 :则是一个数的二进制  如:10    0000 1010   -10  1000 1010

反码:正数的反码和原码相同但负数的反码则数除符号位其他位取反 什么是符号位

符号位则是二进制的最高位 左高右低  如:-10   1111 0101

补码:正数的补码和原码相同不变但负数的补码则是在反码的基础上加一 如:-10 1111 0111

1.当编译器以整型输出的时候%d,是以补码还原的方式解读
2.当cpu将数据进行运算的时候,直接以内存中存放的方式来运行,也就是以补码    的方式参与运算
3.%u输出的时候,值区域范围:0-4294967295(有符号转为无符号的时候)
4.%hhu方式打印,值域范围:0-255

(1)
unsigned char a = 255;// 0 - 255
char b = 255; // -128 - +127
printf("%d , %u\n",a,a);// 255 255
printf("%d , %u\n",b,b);// -1 4294967295
(2)
unsigned short a = -1;// 0-65535
int b = a;
printf("a = %d\n",a);//65535
printf("b = %u\n",b);//65535

(3)
unsigned char a = -1;// 0-255
unsigned int b = -1; // 0-4294967295
printf("a = %d,b = %u\n",a,b);//255,4294967295

 溢出:就是超出数据能表达的最大值

2.3浮点型

概念:用来表达实数(有理数和无理数)的数据类型

分类:

  • 单精度浮点型(float),典型尺寸是4字节

  • 双精度浮点型(double),典型尺寸是8字节

  • 长双精度浮点型(long double),典型尺寸是16字节

  • 占用内存越多,能表达的精度越高

2.4 字符

char ch1 = 'a'; // 'a'是字符常量,代表字母a
char ch2 = '\n'; // '\n'是不可见字符常量,代表回车

计算机中存储都是1和0,因此各种字符都必须被映射位某个数字才能存储到计算机中,这种映射关系形成的表称为ASCII码表。主要记a97 A65 0 48

 

 

char a = 'a';// 存储在内存中是97
char b = '1';// 存储在内存中是49
char c1 = 20;
char c2 = c1 + 'a'; // 等价于char c2 = 20+97;

printf("%c\n",c2); // 以字符形式输出117,即 'u'
printf("%d\n",c2); // 以整型形式输出117

// 小写字符转大写字符 ' ' = 32
char a7 = 'b'- ' ';
printf("%c\n",a7);

转义字符

转义字符,所有的ASCII码都可以用\加数字(一般是8进制数)来表示,而在C中
定义了一些字母前加\来表示常见的哪些不能显示ASCII字符,如\0,\t,\n称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思
当编译器遇到转义字符的时候,会用特殊的方式进行处理,'\n'表示换行
'\b' : 表示退格符
 printf("abcd\b");
 printf("bcde\n");
'\a': 表示告警,主板蜂鸣器
'\t': tab键

'\ddd' ddd 表示八进制数,打印出来的是该数字对应的ascii码
格式为'\'后面又三个数,每个数的范围在  0 - 7
printf("%c\n",'\102');// 八进制

'\xhh'hh 表示十六进制 打印出来的是该数字对应的ascii码
printf("%c\n",'\41');//A

字符串

// 字符串的定义方式有两种:指针和数组
char *s1 = "abcd"; // 使用字符指针来表示字符串
char s2[]= "abcd"; // 使用字符数组来表示字符串

// 注意,使用数组来定义字符串时,方括号[]里面的数字可以省略
// 不省略也可以,但必须必字符串实际占用的内存字节数要大,比如:
char s3[] = "apple";

布尔

bool a = 1; // 逻辑真,此处1可以取其他任何非零数值
bool b = 0; // 逻辑假 c

常量与变量

int a = 100;    // a是变量,而100是常量
float f = 3.14; // f是变量,而3.14是常量
char s[] = "abcd"; // s是变量,"abcd"是常量

输入

scanf(); // 格式化输入函数
fgets(); // 字符串输入函数

int a;
float f;
scanf("%d", &a);  // 从键盘输入一个整型,放入指定的内存地址 &a 中
scanf("%f", &f); // 从键盘输入一个浮点数,放入指定的内存地址 &f 中
// 从键盘依次输入一个整型和一个浮点型数据,用空白符隔开
scanf("%d%f", &a, &f);

char c;
char s[10];
// 从键盘输入一个字符,放入指定的内存地址 &f 中
scanf("%c", &c);  
// 从键盘输入一个单词,放入指定的数组 s 中(注意不是&s)
scanf("%s", s );  

fgets(s, 10, stdin); // 从键盘输入一行字符串,放入数组 s 中

注意:

// 此处输入时必须带逗号
scanf("%d,%d", &a, &b);

// 此处必须先输入a=,然后才能输入整数
scanf("a=%d", &a);

// 此处结束输入时按下的回车符将被scanf()误以为格式控制符,无法正常结束输入
scanf("%d\n", &a);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值