嵌入式学习(一)嵌入式c语言
第一章.c数据类型及语句
1.01 第一个c程序的编写
下载好VScode并配置好环境,可以开始进行第一个c程序的编写。
#include <stdio.h>int main(int argc,char *argv[])
{printf("Hello World!\n");return 0 ;
}
需要注意的几点:
1.#include<stdio.h>头文件包含一定要有
2.每一个c语言程序有且只有一个main函数这是整个程序的开始位置
3.c语言中的括号和冒号都是成对出现的且都是英文符号
4.c语言中的语句必须要以分号结尾
5.//为注释
此为运行按钮,点击即可运行程序。
可以看到程序已经成功在终端运行,成功迈出了第一步。
1.02 数据类型相关的关键字
关键字是c语言已经定义好的名字,直接可以拿过来使用,不需要再次定义。数据类型相关的关键字用于定义变量或者类型。
定义变量的语法结构: 类型 变量名;
变量名属于标识符(变量名,函数名,重命名和取别名),命名规则:
(1)只能以数字,下划线和字母命名
(2)首字母不能是数字
(3)不能与关键字相同
包含char,short,int,long,double,float,struct,union,enum,signed,unsigned,void等关键字
1,char 字符型 用char定义的变量属于字符型变量 占一个字节(8位)
有符号:-2^7~+2^7-1
无符号:0~2^8-1
char ch1 = 'a'; ; =为赋值号
char ch1 = ’1‘; 正确
char ch2 = ’1234‘; 错误 ’1234‘为字符串
2,short 短整型 使用short定义的变量是短整型变量 占两个字节(16位)
有符号:-2^15~+2^15-1
无符号:0~2^16-1
short int a = 11;
3,int 整型 用int定义的变量是整型变量 占四个字节
有符号:-2^31~+2^31-1
无符号:0~2^32-1
int a=44;
4,long 长整型 用long定义的变量是长整型 在32位的系统下占四个字节 在64位的系统下占八个字节
有符号:-2^31~+2^31-1
无符号:0~2^32-1
long int a=66;
5,float 单浮点型(实数)用float定义的变量是单浮点型的实数 占四个字节
有符号:-2^31~+2^31-1
无符号:0~2^32-1
float b =3.8f;
6,double 双浮点型(实数) 用double定义的变量是双浮点型实数 占八个字节
double b = 0.8;
7,struct 结构体类型关键字
8,union 共用体(联合体)相关关键字
9,enum 与枚举类型相关的关键字
10,signed 有符号(正负)的意思 在定义char 整型(short,int,long)数据的时候用signed修饰,代表定义的数据是有符号的,可以保存正数,也可以保存负数
signed int a = 100;
signed int b = -100;
注意:默认情况下signed可以省略 默认有符号类型数据
11,unsigned 无符号的意思 只能保存正数和0 在定义char 整型(short,int,long)数据的时候用unsigned修饰,代表定义的数据是无符号的
12,void 空类型的关键字
char,int,float都可以定义变量
void不能定义变量,没有void类型的变量
void用来修饰函数的参数或者返回值,代表函数没有参数或者没有返回值
sizeof():是一个运算符,可以用来获取数据类型所占内存的大小
1.03存储相关关键字
register static const auto extern
1.register是寄存器的意思 用register修饰的变量是寄存器变量
即:在编译的时候告诉编译器这个是寄存器变量,要尽量将其存储在寄存器当中。
注意:
(1)定义的变量不一定真的存放在寄存器当中
(2)cpu取数据的时候从寄存器中取数据比内存中快
(3)因为寄存器比较宝贵,所以不能定义寄存器数组
(4)register只能修饰字符型和整型不能修饰浮点型的
(5)因为register修饰的变量可能存放在寄存器中也可能存放在内存中,所以不能对寄存器取变量地址,只有在内存中存放的数据才有地址
2,static 是静态的意思
static可以修饰全局变量 局部变量 函数
使用static修饰的变量,此变量存放在内存的静态区空间中
3,const 是常量的意思 用const修饰的变量是只读的不可以修改它的值
const int a = 101;//在定义的时候用const修饰,并赋初值为101,从此以后就不能给a赋值了,const也可以修饰指针
4,auto
auto int a; 和 int a;是等价的,现在基本不用auto
5,extern 是外部的意思,一般用于函数和全局变量的声明
1.04控制语句相关的关键字
条件控制语句:
if语句:if else
switch语句:switch case default
循环控制语句:
do while for goto
辅助控制语句:
break continue
1.05其他关键字
sizeof typedef volatile
1,sizeof 用来测量变量 数组的储存空间大小(字节数)
例:int a;
int num;
num = sizeof(a);
print(“num = %d”,num);
2,typedef 重命名相关的关键字 作用是给一个已有的类型,重新起一个类型名,并没有创造一个新的类型。
1.用想起名的类型定义一个变量
short int a;
2.用新的类型名代替变量名
short int INT16;
3.在最前面加上typedef
typedef short int INT16;
4.然后就可以用新的类型名定义变量了
INT16 b;和short int b;是一个效果
3,volatile 易改变的意思
用volatile定义的变量是易改变的,即告诉cpu每次用volatile变量的时候重新去内存中取 保证用的是最新的值而不是寄存器中的备份 现在极少使用
1.06 基本类型
char,int,short,long,float,double
#include <stdio.h>int main(int argc,char *argv[])
{ //定义一个char类型的变量并赋值 输出用%cchar a = 'w';printf("a = %c\n",a);//定义一个short类型的变量并赋值short b = 100;printf("b = %d\n",b);//定义一个int类型的变量并赋值 输出用%dint c = 100;printf("c = %d\n",c);//定义一个long类型的变量并赋值 输出用%ldlong d = 151514;printf("d = %ld\n",d);//定义一个float类型的变量并赋值 输出用%ffloat e = 3.048454465;printf("e = %f\n",e);//定义一个double类型的变量并赋值 输出用%lfdouble f = 4561.481564156;printf("f = %lf\n",f);return 0 ;
}
代码运行结果正常,需要注意的是float和double类型的变量最多到小数点后六位。
1.07构造类型
概念:由多个相同或不同类型的数据构成的集合,这种数据类型被称为构造类型。
数组,结构体,共用体,枚举
1.08变量和常量的基本认识
常量:在程序运行过程中,值不可以改变的量
例:100,“a”,“hello”
常量的分类:
整型:100,125,-100,-125
实型:3.12,0.125f,-3.7985
字符型:“a”“b”“2”
字符串:“abcd”“1234”
ASCII码表:对于计算机而言只能识别二进制的数字,对于非数字的数据,如果要使用,就需要将其用一个数字型数据进行标识,就称之为ASCII码表。
#include <stdio.h>int main(int argc,char *argv[])
{//注意在使用字符类型的数据时 %c输出字符%d输出ascii值char ch1='w';printf("%c %d",ch1,ch1);char ch2 = 115;printf("%c %d",ch2,ch2);return 0 ;
}
执行代码结果如图所示
变量:其值可以改变的量叫做变量
定义变量的方式:
存储类型 数据类型 变量名;
存储类型 数据类型 变量名 = 变量或者常量;
变量在定义的时候要满足标识符的命名规则
(1)只能由字母数字下划线组成
(2)首字母不能是数字
(3)不能关键字相同
1.09常量和变量按照类型区分
整型数据
整型常量:(按进制分)
十进制:以正常数字1~9开头 如457 45120
八进制:以数字0开头 如0123
十六进制:以0x开头 如0xle
整型变量:
有/无符号短整型(un/signed)short (int) 两个字节
有/无符号基本整型(un/signed)int 四个字节
有/无符号长整型 (un/signed)long int 四个字节(32位处理器中)
实型数据
实型常量:实型常量也称之为实数或者浮点数
十进制数形式:0.0 0.12 5.0
指数形式:123e3表示123乘以10的三次方
123e-3表示123乘以10的负三次方
不以f为结尾的是double类型
以f为结尾的是float类型
实型变量
单精度(float)和多精度(double)
float型:占四个字节,7位有效数字,指数-37~38
double型:占八个字节,16位有效数字,指数-307~308
字符数据
字符常量:
直接常量:用单引号括起来,如’a‘,’b‘
转义字符:以反斜杠'\'开头,后面跟一个或几个字符,如'\n''\t'等,分别代表换行,换向跳格
字符变量:
用char定义,每个字符变量被分配一个字节的内存空间
字符值以ascii码的形式存放在变量的内存单元中
字符串常量:由双引号括起来的字符序列,如“哈哈哈”“abcd”
字符串常量与字符常量的不同:
’a‘为字符常量 “a”为字符串常量
每个字符串的结尾,编译器都会自动添加一个结束标志位’\0‘
即“a”包含了两个字符’a‘和’\0‘
1.10格式化输出字符
%d 十进制有符号整数
%ld 十进制long有符号整数
%u 十进制无符号整数
%o 八进制表示的整数
%x 十六进制表示的整数
%f float型浮点数
%lf double型浮点数
%e指数形式的浮点数
%c 单个字符
%s 字符串
%p 指针
使用%#o可以输出八进制数的前导符。
使用%#x可以输出十六进制数的前导符。
1.11格式化输出字符的特殊应用
%3d %03d %-3d %5.2f
%3d:要求宽度为3位,如果不足三位,前面空格补齐,若足够三位则无效
%03d:要求宽度为3位,如果不足三位,前面用0补齐
%-3d:要求宽度为3位,如果不足三位,后面补齐
%5.2f 宽度为5位,小数点保留后两位
1.12 类型转换
数据有不同的类型,不同类型数据之间进行混合运算时必然涉及类型转换问题。
转换的方式有两种:自动转换:遵循一定的规则,由编译器系统自动完成。
强制类型转换:把表达式的运算结果强制转换成所需要的数据类型
自动转换的原则
1.占用内存字节较少的类型转换成占用内存字节较多的类型,以保证精度不降低。
2.转换方向:
强制转换
通过类型转换运算来实现
(类型说明符)(表达式)
在不同的情况中使用不同的关键字即可,一切需求来源于实际,由于之前没有一条完整的线将这一章穿起来,所以才有了这一篇幅的笔记,与君共勉。
嵌入式学习(一)嵌入式c语言相关推荐
- 【嵌入式学习】嵌入式开发的第一课
前言 在这里仅就嵌入式的学习,简单记录分享. 一.什么是嵌入式 嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能.可靠性.成本.体积.功耗.环境等)灵活裁剪软硬件模块的专用计算 ...
- 【嵌入式学习】嵌入式学习路线介绍
文章目录 资料整理: 理论学习路线 嵌入式软件工程学习路线 51单片机 郭天祥 STM32单片机 正点原子 野火 安富莱 普中科技 参考链接 资料整理: 郭天祥教学视频<单片机:十天征服你> ...
- 【嵌入式学习】嵌入式学习路线
明:课程标题为蓝色字体的是会员课程. 第一阶段:嵌入式系统开发基础理论 10天轻松掌握 C语言 (套餐) 1.C语言必备Linux命令 2.C语言必备基础知识 3.C语言输入输出专题 4.C语言控制语 ...
- 嵌入式学习(一)—— 初步认识
嵌入式学习(一)-- 初步认识 一.认识嵌入式 二.嵌入式学习内容 1.C语言学习 2. 模拟电路,数字电路基础 - 模拟电路 - 数字电路 3. 硬件知识掌握 4. 裸机开发 5. 认识使用外设模块 ...
- 嵌入式学习Java第一课
嵌入式为什么要学习java 首先来看一下传统的嵌入式学习路线: C语言 >> 应用:C51,STM32 linux系统编程 C++ >> 应用:QT ARM开发 在系统的UI层 ...
- 嵌入式学习在linux下使用c语言对文件进行打开、读写操作。_2000字干货!单片机进阶嵌入式Linux要怎么学习……...
文章字数:2000 干货指数:⭐⭐⭐⭐⭐ 导读:这篇文章我们来一起简单梳理嵌入式Linux的一些知识,方便一些想跟我一样想要由单片机进阶到嵌入式Linux的朋友做一些参考学习. 现在随着嵌入式Linu ...
- Linux学习之嵌入式Linux编程文件IO(C语言版)
Linux学习之嵌入式Linux编程文件IO(C语言版) 一.文件IO常用函数 1.open 2.write 3.read 示例代码: #include <sys/types.h> #in ...
- 小智学长嵌入式入门学习路线_1 C语言基础
原课程链接: 嵌入式开发系统学习路线 从基础到项目 精品教程 单片机工程师必备课程 物联网开发 c语言 2022追更 前言 在学习过程中,老师提到了一个很重要的思想:主要从学习嵌入式的角度学习各项技能 ...
- Linux嵌入式学习---c语言之循环结构
Linux嵌入式学习---c语言之循环结构 一.while语句循环 1.1一般形式 1.2累加求和 二.do...while语句循环 2.1do....while语句一般形式 2.2do....whi ...
- Linux嵌入式学习---C语言之赋值
Linux嵌入式学习---C语言之赋值 一.语句的作用和分类 1.常见的9种控制语句 2.函数调用语句 3.表达式语句 4.空语句 5.复合语句 二.赋值语句 1.赋值运算符 2.复合的赋值运算符 3 ...
最新文章
- 皮一皮:高手。。。真是高手
- python学不会的表情包-小学生绞尽脑汁也学不会的python(反射)
- Mindjet MindManagers思维导图使用记录
- Codeforces 516D Drazil and Morning Exercise (栈、二分)
- ERROR: Could not find a version that satisfies the requirement requests (from v ersions: none)
- 你必须掌握足够的知识来明确如何拥有自己的观点。同时,也要培养把自己的观点付诸现实的能力。...
- 使用JavaScript将当前页面保存成PDF,支持图片和文字的保存
- 非负矩阵之Perron-Frobenius定理
- 【Java 多线程】互斥锁,自旋锁和读写锁
- [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
- Redis Cluster 伪集群的搭建
- MediaInfo源代码分析 3:Open()函数
- weblogic运行但局域网内无法访问控制台
- 百度文库 复制文本 下载文档
- sklearn实战之构建SVM多分类器
- .rpt文件内容读取java_python读取Excel,12代码将Excel内容写入txt文件
- elasticsearch分片分配和路由配置
- 【B类】BI商业智能、大数据、Mysql、等系列课程集
- 决策树:ID3C4.5cart算法(从原理到实现-小白教程超详细)
- 锐龙r76800h和酷睿i512500h核显对比 r7 6800h和i5 12500h哪个好
热门文章
- Spss-系统聚类软件实操
- 华表Cell的网页插件在IE8中无法显示的问题 | #华表Cell #报表 #IE8
- php 网站计数器,PHP开源程序通用网站计数器代码分享
- sftp 中文乱码 连接后_LINUX SFTP 中文 乱码
- js复制到剪贴板html5,移动端web 复制到剪贴板 怎么实现?
- android recovery 3e,【记录】尝试用ODIN去恢复启动界面是Android system recovery 3e的I9100G...
- 装机之必备软件下载合集
- QQ里面爱情树显示服务器繁忙,QQ情侣空间爱情树连续浇水断了怎么办 | 手游网游页游攻略大全...
- VARCHART XGantt 应用程序支持简介
- 古建筑测绘任重道远,三维实景建模是唯一突破口?