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

article/2025/8/22 21:38:02

文章目录

  • 第一章:入门
    • 1.Hello World!
    • 2.C语言标识符与关键字
      • (1)标识符:
      • (2)关键字
    • 3.数据类型与运算符
      • (1)变量与常量
        • <1>变量
        • <2>变量的定义
        • <3>常量
      • (2)运算符
        • <1>算术运算符
        • <2>自增、自减运算符
        • <3>赋值与赋值组合运算符
        • <4>关系运算符
        • <5>逻辑运算符
        • <6>位移运算符
        • <7>条件运算符
    • 4.入门函数与最简单语句(学完就能简单写程序)
      • (1)输入数据与输出数据
        • <1>整形数据与实型数据的输入输出
        • <2>字符数据的输入与输出(不常用但不能不会)
      • (2)简单语句及编程格式

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

第一章:入门

1.Hello World!

  C语言入门程序,绝大部分辅导书给出的初学者第一个入门程序为“Hello World”。下面以Visual Stdio 2019平台为编程软件,演示如何编写属于自己的第一个程序。
  打开Visual Stdio 2019界面,如图:
VS2019界面
  点击【创建新项目,在下拉栏中找到【空项目】(注意,是C++),如图:
界面
  自行命名项目名称,点击【创建©,如图:
配置
  创建完成后,左边【解决方案资源管理器】中左键【源文件】->【添加】->【新建项】,在弹出的界面中选择【C++文件】,并自行命名,如图:
1
  添加后界面如下:
2
  代码如下,请模仿下面代码编写自己的第一个程序:

#include <stdio.h>int main()
{printf_s("Hello World!");return 0;
}

  点击【本地Windows 调试器】,结果如图:
3
  以上我们便完成了第一个简单程序的编写。

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;
}

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


http://chatgpt.dhexx.cn/article/4wDtRe6u.shtml

相关文章

STM32中常用的C语言知识点,开始复习!

要学嵌入式&#xff0c;关注我要学嵌入式&#xff0c;嵌入式猛男的加油站。 C语言是单片机开发中的必备基础知识&#xff0c;这里就列举部分STM32学习中会遇见的C 语言基础知识点。 01 位操作 下面我们先讲解几种位操作符&#xff0c;然后讲解位操作使用技巧。C语言支持如下6中…

嵌入式C语言(入门必看)

目录 STM32的数据类型 const关键字 static 关键字 volatile关键字 extern关键字 struct结构体 enum typedef #define 回调函数 #ifdef 、#ifndef、#else 、#if 嵌入式开发中既有底层硬件的开发又涉及上层应用的开发,即涉及系统的硬件和软件,C语言既具有汇编语言操…

用单层感知器完成逻辑或运算的学习过程

用单层感知器完成逻辑或运算的学习过程 这道题目是我“认知科学”&#xff08;专业必修/doge&#xff09;课程的结课作业题之一&#xff0c;目的在于加深对单层感知器的理解&#xff0c;对于后续学习神经网络打下基础。 有关知识&#xff1a; B站有关视频 单层感知器的学习过…

python中逻辑运算_【多选题】Python 中用于表示逻辑与、逻辑或、逻辑非运算的关键字分别是( ) A. and B. add C. or D. not...

【多选题】Python 中用于表示逻辑与、逻辑或、逻辑非运算的关键字分别是( ) A. and B. add C. or D. not 更多相关问题 A.He has been asked to join the committee.B.There are several new people on the c A.fill inB.equipC.fitD.prove A.encounterB.discernC.seeD.fre…

逻辑运算符简介, 逻辑与,逻辑或,逻辑非和逻辑运算符里的短路运算规则

1&#xff0c;逻辑与 && 符号两边都为true&#xff0c;结果才为true 一假则假 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"…

R语言的逻辑与、逻辑或和元素逻辑与、元素逻辑或的区别

版权声明&#xff1a;转载请注明作者&#xff08;独孤尚良dugushangliang&#xff09;出处&#xff1a;https://blog.csdn.net/dugushangliang/article/details/116463648 参阅&#xff1a;https://www.runoob.com/r/r-basic-operators.html 下图为R运行结果。首先对a、b赋值&a…

Java逻辑操作符——逻辑非、逻辑与、逻辑或和逻辑异或

先上一段java代码&#xff0c;通过具体例子来理解抽象概念 public class 布尔值 {public static void main(String[] args) {boolean 逻辑非的值_测试1 true;boolean 逻辑非的值_测试2 false;System.out.println("逻辑非的值_测试1:"!逻辑非的值_测试1);System.ou…

逻辑与和按位与、逻辑或和按位或的区别

首先分别明确一下他们各自的概念。 按位与和按位或 按位与和按位或都属于位操作符。 注意&#xff1a;位操作符的操作数必须是整数。 按位与“&” 按二进制位对应的位进行与运算&#xff0c;对应位都为1时&#xff0c;结果才为1 3&5 3的二进制&#xff1a; 00000…

JS中的逻辑与和逻辑或

JS中的逻辑或||符号&#xff1a; 从字面上来说&#xff0c;只有前后都是 false 的时候才返回 false&#xff0c;否则返回 true。 console.log(5 > 6|| 6 > 5) //返回true5>6为false 但是 6>5为true 所以返回 true 总结&#xff1a;一真为真 特殊运算方法&#xff…

逻辑或( || )和逻辑与( )的关系

逻辑或&#xff0c;符号为“||”&#xff0c;只有操作数都是假&#xff0c;结果才是假。&#xff08;全假才为假&#xff09; 逻辑与&#xff0c;符号为“&&”&#xff0c;只有操作数都是真&#xff0c;结果才是真。&#xff08;全真才为真&#xff09; 如下图&#xf…

计算机逻辑与 或 非的表达式,计算机算数和,逻辑与,逻辑或,逻辑非分别是什么意思...

蔷祀的回答: 1、算术和:算术和就是所有的加数都是非负的(整数或0)得到的和。 2、逻辑与:逻辑与即1101 & 0100,就是按位相与,与的概念可以同俗的理解为,一个电路有两个串联的开关,只有同时关闭两个开关电路才通,打开任意一个开关电路都不通,所以那两个数逻辑与的结…

逻辑与(),逻辑或(||),and(),or(|)

一、背景、 这四个逻辑运算符&#xff0c;大家都知道&#xff0c;但是有时候会凌乱&#xff0c;再者就是我自己想写一点基础的东西&#xff0c;巩固一下自己&#xff0c;也算是一种笔记&#xff0c;不但自己会了&#xff0c;还可以分享给大家一起学习。 二、目的、 巩固自己…

逻辑同或,逻辑异或,逻辑与,逻辑或

一、逻辑异或 真⊕假真 假⊕真真 假⊕假假 真⊕真假 或者为&#xff1a; True ⊕ False True False ⊕ True True False ⊕ False False True ⊕ True False 二、逻辑同或 相同为一&#xff0c;不同为零。 三、逻辑与 1.逻辑与&& 表示逻辑与的意思&#xff0…

按位或与逻辑或的区别

按位或&#xff08;|&#xff09;和逻辑或&#xff08;||&#xff09;的区别&#xff1a;逻辑或&#xff1a;逻辑或是三种逻辑运算符之一。 逻辑或相当于生活中的或者&#xff0c;当两个条件中有任一个条件满足&#xff0c;逻辑或的运算结果就为真。按位或&#xff1a;按位或运…

Axure8.0 注册码

我的Axure升级到8.1.0.3382&#xff0c;使用最后一个可用的&#xff01; 其他版本的小伙伴&#xff0c;请自行试验吧~ 升级了8.1.0.3377版本后&#xff0c;需要使用下面这组注册码 license&#xff1a;zdfans.com key&#xff1a;gP5uuK2gH iIVO3YFZwoKyxAdHpXRGNnZWN8Obn…

Axure下载安装-汉化-注册码

安装版本&#xff1a;8.1.0 一、下载、安装 链接&#xff1a;https://pan.baidu.com/s/1GbQKSn2aWnFOAkPsLITWQA 密码&#xff1a;qcf6 安装最后一步&#xff0c;不要点Run xxx 二、汉化 下载一个01053230.zip的压缩包&#xff0c;解压后把lang文件夹放到Axure的安装目录下…

RFID-RC522/STM32F103RB/KEIL5 简单实现读取卡片ID

文章目录 序章简单使用核心源码工程下载 序章 在这篇文章【 https://blog.csdn.net/qq_28877125/article/details/80437095 】的基础上修改完成&#xff01; 简单使用 1).环境配置 MCU芯片型号&#xff1a;STM32F103RB开发板&#xff1a;理论任何STM32开发板KIDE&#xff1…

STM32CubeMX(13)——SPI时序读写RFID-RC522

SPI时序读写RFID-RC522 目录 STM32 Cubemax(十三) ——SPI时序读写RFID-RC522 前言 一、SPI时序通信 二、模块接线 三.Cubemax配置 四.核心代码 延时函数 写RC522寄存器 读RC522寄存器 复位RC522 使用代码 1.复位 2.寻卡并得到其序列号 总结 前言 用RFID来学习一…

基于STM32+RC522设计的门禁系统

一、项目背景 门禁系统是现代社会中非常重要的安全控制系统之一,其功能是在保障建筑物安全的同时,为合法用户提供便利。当前设计一种基于STM32+RC522的门禁系统设计方案,通过RFID-RC522模块实现了对用户卡的注册、识别及身份验证,通过控制SG90舵机实现门锁的开关,具有较高…

硬件速攻-RC522射频模块

介绍 RC522是一种射频识别&#xff08;RFID&#xff09;模块&#xff0c;用于读取和写入基于ISO/IEC 14443 A/MIFARE协议的13.56MHz RFID标签。该模块可以通过SPI接口与微控制器进行通信&#xff0c;并支持多达25个字节的数据传输。 RC522模块包括一个天线、收发器、调制解调…