第一章.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语言相关推荐

  1. 【嵌入式学习】嵌入式开发的第一课

    前言 在这里仅就嵌入式的学习,简单记录分享. 一.什么是嵌入式 嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能.可靠性.成本.体积.功耗.环境等)灵活裁剪软硬件模块的专用计算 ...

  2. 【嵌入式学习】嵌入式学习路线介绍

    文章目录 资料整理: 理论学习路线 嵌入式软件工程学习路线 51单片机 郭天祥 STM32单片机 正点原子 野火 安富莱 普中科技 参考链接 资料整理: 郭天祥教学视频<单片机:十天征服你> ...

  3. 【嵌入式学习】嵌入式学习路线

    明:课程标题为蓝色字体的是会员课程. 第一阶段:嵌入式系统开发基础理论 10天轻松掌握 C语言 (套餐) 1.C语言必备Linux命令 2.C语言必备基础知识 3.C语言输入输出专题 4.C语言控制语 ...

  4. 嵌入式学习(一)—— 初步认识

    嵌入式学习(一)-- 初步认识 一.认识嵌入式 二.嵌入式学习内容 1.C语言学习 2. 模拟电路,数字电路基础 - 模拟电路 - 数字电路 3. 硬件知识掌握 4. 裸机开发 5. 认识使用外设模块 ...

  5. 嵌入式学习Java第一课

    嵌入式为什么要学习java 首先来看一下传统的嵌入式学习路线: C语言 >> 应用:C51,STM32 linux系统编程 C++ >> 应用:QT ARM开发 在系统的UI层 ...

  6. 嵌入式学习在linux下使用c语言对文件进行打开、读写操作。_2000字干货!单片机进阶嵌入式Linux要怎么学习……...

    文章字数:2000 干货指数:⭐⭐⭐⭐⭐ 导读:这篇文章我们来一起简单梳理嵌入式Linux的一些知识,方便一些想跟我一样想要由单片机进阶到嵌入式Linux的朋友做一些参考学习. 现在随着嵌入式Linu ...

  7. Linux学习之嵌入式Linux编程文件IO(C语言版)

    Linux学习之嵌入式Linux编程文件IO(C语言版) 一.文件IO常用函数 1.open 2.write 3.read 示例代码: #include <sys/types.h> #in ...

  8. 小智学长嵌入式入门学习路线_1 C语言基础

    原课程链接: 嵌入式开发系统学习路线 从基础到项目 精品教程 单片机工程师必备课程 物联网开发 c语言 2022追更 前言 在学习过程中,老师提到了一个很重要的思想:主要从学习嵌入式的角度学习各项技能 ...

  9. Linux嵌入式学习---c语言之循环结构

    Linux嵌入式学习---c语言之循环结构 一.while语句循环 1.1一般形式 1.2累加求和 二.do...while语句循环 2.1do....while语句一般形式 2.2do....whi ...

  10. Linux嵌入式学习---C语言之赋值

    Linux嵌入式学习---C语言之赋值 一.语句的作用和分类 1.常见的9种控制语句 2.函数调用语句 3.表达式语句 4.空语句 5.复合语句 二.赋值语句 1.赋值运算符 2.复合的赋值运算符 3 ...

最新文章

  1. 皮一皮:高手。。。真是高手
  2. python学不会的表情包-小学生绞尽脑汁也学不会的python(反射)
  3. Mindjet MindManagers思维导图使用记录
  4. Codeforces 516D Drazil and Morning Exercise (栈、二分)
  5. ERROR: Could not find a version that satisfies the requirement requests (from v ersions: none)
  6. 你必须掌握足够的知识来明确如何拥有自己的观点。同时,也要培养把自己的观点付诸现实的能力。...
  7. 使用JavaScript将当前页面保存成PDF,支持图片和文字的保存
  8. 非负矩阵之Perron-Frobenius定理
  9. 【Java 多线程】互斥锁,自旋锁和读写锁
  10. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
  11. Redis Cluster 伪集群的搭建
  12. MediaInfo源代码分析 3:Open()函数
  13. weblogic运行但局域网内无法访问控制台
  14. 百度文库 复制文本 下载文档
  15. sklearn实战之构建SVM多分类器
  16. .rpt文件内容读取java_python读取Excel,12代码将Excel内容写入txt文件
  17. elasticsearch分片分配和路由配置
  18. 【B类】BI商业智能、大数据、Mysql、等系列课程集
  19. 决策树:ID3C4.5cart算法(从原理到实现-小白教程超详细)
  20. 锐龙r76800h和酷睿i512500h核显对比 r7 6800h和i5 12500h哪个好

热门文章

  1. Spss-系统聚类软件实操
  2. 华表Cell的网页插件在IE8中无法显示的问题 | #华表Cell #报表 #IE8
  3. php 网站计数器,PHP开源程序通用网站计数器代码分享
  4. sftp 中文乱码 连接后_LINUX SFTP 中文 乱码
  5. js复制到剪贴板html5,移动端web 复制到剪贴板 怎么实现?
  6. android recovery 3e,【记录】尝试用ODIN去恢复启动界面是Android system recovery 3e的I9100G...
  7. 装机之必备软件下载合集
  8. QQ里面爱情树显示服务器繁忙,QQ情侣空间爱情树连续浇水断了怎么办 | 手游网游页游攻略大全...
  9. VARCHART XGantt 应用程序支持简介
  10. 古建筑测绘任重道远,三维实景建模是唯一突破口?