网站平台搭建,织梦企业门户网站,网站建设中的形象满意指的是销售,网站建设与维护的实训总结Day 01 学习总结 嵌入式学习的四个阶段 C语言 学习重点#xff1a; C语言写代码的流程#xff1a; 需求分析 - 确定程序目标。理清思路 - 明确实现步骤。代码编写 - 学习和使用 C 语言语法。调试 - 解决错误#xff0c;验证功能。代码提交 - 学习版本控制工具#xff08;Gi…Day 01 学习总结 嵌入式学习的四个阶段 C语言 学习重点 C语言写代码的流程 需求分析 - 确定程序目标。理清思路 - 明确实现步骤。代码编写 - 学习和使用 C 语言语法。调试 - 解决错误验证功能。代码提交 - 学习版本控制工具Git、SVN代码托管平台GitHub、Gitee。 C语言语法 数据类型short、int、long、float、double、char。变量、输入输出、流程控制语句条件判断、循环。函数、数组、指针、结构体、宏定义等高级特性。文件操作、链表等数据结构。 小项目 图书管理系统、贪吃蛇、日历程序。 单片机 学习重点 基础硬件控制GPIO、串口、定时器、中断。通信协议I2C、SPI、ADC、DMA、蓝牙、WiFi。上云物联网平台接入。 学习方法 熟读芯片手册如 STM32。模块化学习传感器和功能的实现。产品开发流程需求分析、选型、编程、调试、代码管理。 小项目 智能家居、智能锁、无人机。 Linux 学习重点 系统编程文件操作、I/O、多线程、进程间通信。网络编程Socket。驱动开发内核裁剪与移植、根文件系统制作、外设驱动开发。C、QT用户界面开发。 学习方法与心态
学习方法
模仿 理解代码的用途和写法。 自己动手写 按照学习的思路自己尝试实现。 总结 每天复盘通过练习巩固知识。 项目实践 综合应用知识参与项目开发。
学习心态
认可嵌入式行业 清楚自己的目标保持兴趣。 保持节奏 不与他人攀比掌握每日知识点即可。 主动拓展 学习数据结构与算法等编程基础知识。 C语言学习
工具与基本框架
使用 devcpp 或 VS 工具创建 .c 源文件。基本 main 函数框架#includestdio.h
int main(void)
{printf(hello world\n);return 0;
}C语言语法要点 数据类型 整型 short (2字节)int (4字节)long (4/8字节)long long (8字节)。有符号/无符号signed/unsigned。范围 unsigned short: 0~65535signed short: -32768~32767 浮点型 float (4字节, 6~10位有效)double (8字节, 10位有效)。 字符型 char (1字节)存储 ASCII 值。unsigned char 范围0~255signed char 范围-128~127。 格式控制符 short - %hint - %dlong - %ldfloat - %fdouble - %lfchar - %c 变量 定义格式数据类型 变量名;。全局变量未初始化默认为 0局部变量未初始化为垃圾值。赋值方式 赋值符号。scanf 函数输入int a;
scanf(%d, a);学习作业
总结 数据类型、格式控制符 和 内存空间。定义两个变量输入数据输出其和、差、积、商。输出 2024年4月的日历。设计一个程序模拟购物卡买东西的流程。 C语言练习示例
作业 1总结
数据类型short、int、long、float、double、char。格式控制符%d、%f、%c 等。
作业 2两数运算
#includestdio.h
int main(void)
{int a, b;printf(请输入两个整数);scanf(%d %d, a, b);printf(和%d\n, a b);printf(差%d\n, a - b);printf(积%d\n, a * b);if (b ! 0)printf(商%d\n, a / b);elseprintf(除数不能为零\n);return 0;
}作业 3日历程序
#includestdio.h
int main(void)
{printf(2024年4月的日历\n);printf(日 一 二 三 四 五 六\n);printf( 1 2 3 4 5 6\n);printf( 7 8 9 10 11 12 13\n);printf(14 15 16 17 18 19 20\n);printf(21 22 23 24 25 26 27\n);printf(28 29 30\n);return 0;
}作业 4购物卡模拟
#includestdio.h
int main(void)
{float card_balance 1000.0; // 初始余额float price;printf(购物卡余额%.2f\n, card_balance);printf(请输入商品价格);scanf(%f, price);if (price card_balance){card_balance - price;printf(购买成功剩余余额%.2f\n, card_balance);}else{printf(余额不足无法购买\n);}return 0;
}补充
long 类型的大小4 字节或 8 字节取决于编译器、目标平台和数据模型的实现。以下是不同情况下 long 的大小 1. 数据模型的影响
数据模型决定了基本数据类型的大小包括 int、long 和 pointer。常见的数据模型如下
数据模型intlongpointerILP32444LP64488LLP64448
ILP3232 位架构常见int、long 和指针都是 4 字节。LP64Unix 系统 64 位架构常见long 和指针是 8 字节int 是 4 字节。LLP64Windows 64 位架构常见int 和 long 是 4 字节指针是 8 字节。 2. 影响因素
1目标平台的位宽
32 位平台 通常使用 ILP32 数据模型long 为 4 字节。 64 位平台 Unix/Linux如 GCC 编译器通常使用 LP64 模型long 为 8 字节。Windows如 MSVC 编译器通常使用 LLP64 模型long 为 4 字节。
2编译器的实现
不同的编译器可能会有不同的实现 GCC 和 Clang 在 64 位模式下遵循 LP64 模型long 为 8 字节。MSVC微软编译器在 64 位模式下遵循 LLP64 模型long 为 4 字节。
3操作系统
Unix 系统Linux/macOS大多采用 LP64 数据模型64 位下 long 为 8 字节。Windows 系统通常采用 LLP64 数据模型即使是 64 位long 仍为 4 字节。 如何检查 long 的大小
您可以通过以下代码检查 long 的大小
#include stdio.hint main() {printf(Size of long: %zu bytes\n, sizeof(long));return 0;
}总结
long 是 4 字节 32 位平台常见的数据模型为 ILP32。64 位 Windows 系统数据模型为 LLP64。 long 是 8 字节 64 位 Unix/Linux 系统数据模型为 LP64。
理解 long 的大小差异对于跨平台开发至关重要尤其在需要精确控制数据大小的场景中如网络协议、文件格式。 在 C 语言中%zu 是 printf 格式说明符用于输出 size_t 类型 的值。 详细解释 size_t 类型 size_t 是一种无符号整数类型用于表示对象的大小通常与平台相关。它的大小通常等于目标平台指针的大小 32 位系统size_t 通常是 4 字节unsigned int。64 位系统size_t 通常是 8 字节unsigned long。 %zu 的作用 z 是一个长度修饰符用于表示与 size_t 对应的类型。u 表示无符号整数unsigned int。因此%zu 专门用来格式化输出 size_t 类型的变量确保在不同平台上格式正确。 为什么需要 %zu
不同的平台上size_t 的实际类型可能不同例如 在 32 位系统上size_t 可能是 unsigned int。在 64 位系统上size_t 可能是 unsigned long。 如果直接使用 %u 或 %lu可能会导致格式不匹配%zu 保证了跨平台的兼容性。 示例代码
#include stdio.hint main() {size_t size sizeof(int);printf(Size of int: %zu bytes\n, size);return 0;
}运行结果
32 位系统Size of int: 4 bytes64 位系统Size of int: 4 bytes 与其他格式符对比
%d输出有符号整数int。%u输出无符号整数unsigned int。%lu输出 unsigned long 类型。%zu输出 size_t 类型专为对象大小设计。 总结
使用 %zu 是一种规范化的方式用来输出 size_t 类型确保代码的可移植性和正确性。推荐在涉及 sizeof 或内存相关操作时使用 %zu 进行输出。