极简嵌入式C语言教程——从入门到入土

Posted 修灯泡的老张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了极简嵌入式C语言教程——从入门到入土相关的知识,希望对你有一定的参考价值。

文章目录


注:本系列文章只有干货,其余赘述不予提及,编程平台基于Visual Stdio 2019及Keil 5

第一章:入门

1.Hello World!

  C语言入门程序,绝大部分辅导书给出的初学者第一个入门程序为“Hello World”。下面以Visual Stdio 2019平台为编程软件,演示如何编写属于自己的第一个程序。
  打开Visual Stdio 2019界面,如图:

  点击【创建新项目,在下拉栏中找到【空项目】(注意,是C++),如图:

  自行命名项目名称,点击【创建©,如图:

  创建完成后,左边【解决方案资源管理器】中左键【源文件】->【添加】->【新建项】,在弹出的界面中选择【C++文件】,并自行命名,如图:

  添加后界面如下:

  代码如下,请模仿下面代码编写自己的第一个程序:

#include <stdio.h>

int main()

	printf_s("Hello World!");
	return 0;

  点击【本地Windows 调试器】,结果如图:

  以上我们便完成了第一个简单程序的编写。

2.C语言标识符与关键字

(1)标识符:

  用于表示程序的各种元素。C语言的标识符由 大小写字母、数字和下划线( _ ) 三种字符构成;标识符 第一个字符必须是字母或下划线,且标识符区分大小写
例:

int First_1W = 10;

其中,First_1W 就是标识符,建议标识符长度不超过8个字符。
错误示例:

LAO.ZHANG    ZHANGSHIFU%%HH   123S

(2)关键字

  关键字就是被C语言本身使用,不能作为其他用途使用的标识符,关键字不能作为变量名、函数名等用户自定义的标识符
  ANSI标准C语言定义了32关键字:

auto  break  case  char  const  continue  default  do
double  else  enum  extern  float  for  goto  if
int  long  register  return  short  signed  sizeof  static
struct  switch  typedef  union  unsigned  void  volatile  
while

3.数据类型与运算符

(1)变量与常量

<1>变量

  变量命名规则:
1变量名可以由字母、数字和下划线( _ )组成;
2变量名不能包含除下划线以外的任何特殊字符;
3变量名必须以字母或下划线开头;
4变量名不可包含空格;
5不可使用关键字作变量名;
6变量名区分大小写;

<2>变量的定义

格式如下(不要丢掉语句末端的“ ”):

类型说明符 变量名1,变量名2,;

例:

int i;
char a_q;
float s55 = 10; //此语句在为变量s55赋初值,也被称为变量的初始化

  变量使用规则:
1必须 先定义再使用
2不可给变量赋值超过定义范围的内容;

float a;  //变量的定义
a = 10.08; //此操作被称为变量的赋值
/*************************************/
const int a = 10;  //其中 const 表示只读,即程序运行时可以访问变量 a,但不可以改变变量 a 的值。
变量类型类型说明符取值范围所需内存字节数输入数据类型输出修饰符 or 格式控制字符串
短整型short int − 2 15 ∼ -2^15 \\sim 215 2 15 − 1 2^15-1 2151 − 32768 ∼ -32768\\sim 32768 + 32767 +32767 +327672整型%d
整形int − 2 31 ∼ -2^31 \\sim 231 2 31 − 1 2^31-1 2311 − 2147483648 ∼ -2147483648\\sim 2147483648 + 2147483648 +2147483648 +21474836484整型%d
长整型long int同整形同整形整型%d
无符号短整型unsigned short int 0 ∼ 0\\sim 0 65535 65535 655352整型%d
无符号整型unsigned int 0 ∼ 0\\sim 0 4294967295 4294967295 42949672954整型%d
无符号长整型unsigned long int同无符号整型同无符号整型整型%d
单精度变量float有效数字7位,不要求小数位数时输出小数点后6位4实型%f,%.nf
双精度变量double有效数字16位,不要求小数位数时输出小数点后6位8实型%lf,%.nlf
字符型变量char一个字符型变量可存放一个字符1字符型%c,%s(字符串)

例:

int a=7;
float b=8.9;
char a='A';

<3>常量

  常量分为字面常量和宏常量:
1字面常量指在源代码中直接输入的值,如:59,’A‘;
例:

int a=59// 其中 59 就是常量

2宏常量指为使程序易于阅读或修改,给程序中经常使用或频繁修改的常量定义一个有一定含义的名字,一般使用#define宏定义进行命名。
例:

#define PI 3.1415926 
/*在接下来的程序运行中, 
PI将会被3.1415926替代,修改#define PI 后的值,
以下的程序中PI的值也会被改变。这时PI也被成为符号常量*/

根据约定,符号常量的字母为大写,符号变量的字母为小写

(2)运算符

<1>算术运算符

  包括加(+),减(-),乘(×),除(÷),求余(%,即求除法中的余数);

<2>自增、自减运算符

  包括++和- -,

int i=0;
i++;  //此处i++;与i=i+1;作业相同,都是每次加1
/***************************************/
int m=10;
m--;  //此处i--;与i=i-1;作用相同,都是每次减1

<3>赋值与赋值组合运算符

int a;
a=15;        //此处 = 为赋值运算符意义为”赋值“,不是”等于“!!!一定注意!!!
a+=1;        //此处 += 表示每次增加等号后面的数值,a+=1作用与a=a+1相同
/*类似的还有 -=,/=,*=,%= 等

<4>关系运算符

  包括大于(>),等于(==,两个等号才表示等于!!一定注意),小于(<),大于等于(>=),小于等于(<=),不等于(!=)

<5>逻辑运算符

  包括 逻辑与( && ),逻辑或( || ),逻辑非( ! )。
注:关于关系运算符与逻辑运算符我会放到后面初级部分里的if语句里细讲。这里只需要了解即可。

<6>位移运算符

  包括 ~,|,&,<<,>>和^等,具体会在嵌入式C语言部分细讲。这里了解即可。

<7>条件运算符

  包括 ? 和 : ,这两个符号能够组成C语言中唯一一个三目运算符(?:),具体会放到后面初级部分里的if语句里细讲,这里只需要了解即可。

4.入门函数与最简单语句(学完就能简单写程序)

(1)输入数据与输出数据

<1>整形数据与实型数据的输入输出

  所谓数据输入指的是使用者通过键盘等外设,向计算机获取数据的接口或函数传输数据(键盘打字就是输入);输出指计算机通过打印,屏幕显示或声光等方式向使用者或下一级计算机传递结果的动作(屏幕上出现你打的字,或者计算结果等等)。
  整形与实型数据的输入常用的是通过scanf函数实现,scanf函数用法如下:

scanf ("格式控制字符串",输入项地址列表);
//例:
int a;
scanf("%d",&a); //这里 &a 代表a的地址

  你想输入什么类型的数据,就在格式控制字符串处输入相应格式。
  整型与实型数据的输出常用的是通过printf函数实现,printf函数用法如下:

printf("格式控制字符串",输出项列表);
//例:
int a=10,b=13;
printf("%d%d",a,b);
printf("a=%d,b=%d",a,b);

  你想输出什么类型的数据,就在格式控制字符串处输入相应格式。
注:高版本Visual Stdio(vs2010以后)scanf、printf等很多函数后面都加上了"_s",例如:“printf_s”,“scanf_s”等,这是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,有时黑客可以利用原版的不安全性黑掉系统。比如:char d[20];写成scanf_s(“%s”,d,20);才是正确的,有这个参数20使准确性提高。(原文意 引自百度百科)

<2>字符数据的输入与输出(不常用但不能不会)

  输入使用getchar()函数一次输入一个字符,输出使用putchar()函数一次输出一个字符,例:

char ch;   
ch=getchar();   //输入
printf("%c\\n",ch);
printf("%d",ch);
/****************************************/
char ch='A';
putchar(ch);   //输出

注意:字符数据以ASCII码形式储存,因此当以%d输出一个字符变量的时候,输出的结果是该字符的ASCII码,具体何为ASCII码在此不做解释,请自行查阅ASCII码表及其相关资料。

(2)简单语句及编程格式

这里以一个简单的小程序为例:

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
/*以上为头文件,把程序比做人的话,人没了脑袋肯定活不成,程序没了头文件也照样寄*/
int main()//一个程序只能有一个主函数

  int a=10,x=0;       //先定义变量,定义变量的同时可以顺便赋值
  float b=4.55;
  char b='A';
  char c;
  double d;
  x=a+15;
  c=getchar();
  scanf("%lf",&d);
  printf("a的值为%d,b的值为%d,x的值为%d"a,b,x);
  putchar(b);
  return 0;

《第一章入门》的内容就到这里了,期待在《第二章结构与函数》再见。

以上是关于极简嵌入式C语言教程——从入门到入土的主要内容,如果未能解决你的问题,请参考以下文章

极简嵌入式C语言教程——从入门到入土

极简嵌入式C语言教程——从入门到入土

极简嵌入式C语言教程——从入门到入土

极简嵌入式C语言教程——从入门到入土

极简嵌入式C语言教程——从入门到入土

极简嵌入式C语言教程——从入门到入土