对单片机C语言的一些误用和总结
我觉得语言之所以能称之为语言,它肯定是一种工具一种相互交流相互通信相互传达之间的意图的工具,作为语言那肯定得有自己的语法,要想相互交流肯定得先学好它的语法吧(比如像表达式,函数,循环,指针)我称之为C语言的语法。C语言虽然很强大但是他也有不少陷阱,所以我发这篇博客有两个目的一是:把C语言一些误用易错的地方总结一下,二是把C语言一些基本语法总结一下~
第一次:
1.关于自增自减(即 i,i )
要想给一个数加一或减一我们可以:
i = 1;
j -= 1;
而C语言还允许用 和--运算符,其实这里有误导,因为 和--可以作为前缀和后缀,这样的话他们就有可能改变操作数的值,下面让我们来看看:
i = 1;
printf("i is %d\n", i); /* prints i is 2 */
printf("i is %d\n",i); /* prints i is 2 */
计算表达式i 的结果是i,但是会引发i随后进行自增:
i = 1;
printf("i is %d\n",i ); /* prints i is 1/ */
printf("i is %d\n",i); /* prints i is 2 */
第一个printf 显示了i自增前的原始值,第二个printf显示了i变化后的新值;当然 -- 类似我就不举例了~
但在同一个表达式中多次使用 和--往往很难理解我们看看下面的例子:
i = 1;
j = 2;
k = i j ;
i,j,k最终值分别是2,3,4而 i是2 j 是2;
总结:不管是 i还是i 执行这条语句后i的值都加一了只是( i)的值加一了而(i )没变,
2.typedef与#define
2.1.typedef
C语言除了直接使用标准的类型名(如 int char float double)和自己声明的结构体、共用体、指针、枚举类型外,还可以用typedef声明新的类型名来代替现有的类型名。
typedef unsigned char u8;
typedef unsigned int u16;
u8 count;
u16 time;
typedef struct
{
u8 month;
u8 day;
u16 year;
}DATE;
DATE brithday;
总结一下,声明新的类型名的方法:
1.先按定义变量的方法写出定义体(如 unsigned int i)
2.在变量名换成新的变量名(如将 i换成u16)
3.在最前面加上typedef (typedef unsigned int u16)
4.然后用新类型名去定义变量
2.2 #define
2.2.1不带参数的宏定义
#define 标识符 字符串
#define PI 3.1415926
注意:
1.它的作用是在本程序中用指定的标识符PI来代替3.1415926
2.宏定义是用宏来代替字符串也就是做简单的置换,不做正确性检查如果写成
#define PI 3.l4l6926
即把1写成了字母l但是预处理照常代入不做任何语法检查!!
2.2.2带参数的宏定义
#define 宏名(参数) 字符串
#define S(a,b) a*b
area = S(a,b);
#define MAX(x,y) (x)>(y) ? (x)y)
3.typedef和#define的区别
一般来说typedef 因为它能正确处理指针类型
typedef char *String1;
#define String2 char *
String1 s1,s2;
String2 s3,s4;
s1,s2,s3 被定义为了char* 但s4却被定义为了char型
3. static 变量
static变量大致分为三种用法
1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期.
2. 用于全局变量,主要作用是限制此全局变量被其他的文件调用.
3. 用于类中的成员.表示这个成员是属于这个类但是不属于类中任意特定对象
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
对单片机C语言的一些误用和总结相关推荐
- 单片机c语言 u16,单片机C语言的误用
单片机C语言的误用 导语:在学习单片机的时候才真正知道C语言是什么它是来干什么的,但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,也经常出现误用,让我们了解一下吧! 我们是不是在写程序的 ...
- c语言程序设计分段定时器,单片机C语言编程定时器的几种表达方式
原标题:单片机C语言编程定时器的几种表达方式 吴鉴鹰单片机开发板地址 店铺:[吴鉴鹰的小铺] 地址:[https://item.taobao.com/item.htm?_u=ukgdp5a7629&a ...
- 单片机如何使用?51单片机C语言编程实例有哪些?
大家好,我是无际单片机编程的徐明,今天和大家一起探讨一下"单片机如何使用?" 单片机如何使用,我们要知道单片机在哪里使用? 单片机是很多电子产品的核心器件,它具有一定的逻辑判断和事 ...
- 单片机c语言编译软件6,eUIDE下载-单片机c语言编译器 v1.07.32.23 官方版 - 安下载...
eUIDE是一款专业的单片机c语言编译器,EM78系列集成开发环境是面向项目的ELAN EM78系列微控制器的开发工具,它包括UICE开发在线仿真器和eUIDE软件工具:eUIDE是基于PC端的UIC ...
- 访问外部扩展C语言编程,单片机C语言编程(系统扩展IC)8.ppt
单片机C语言编程(系统扩展IC)8 第8章 单片机系统扩展 第8章 单片机系统扩展 目 录 8.1 扩展并行三总线 8.2 扩展简单并行输入/输出口 8.3 扩展并行数据存储器 8.4 串行扩展总线接 ...
- 单片机c语言编程教学大纲,《单片机C语言编程》教学大纲
<单片机C语言编程>教学大纲 课程代码:000002336 课程英文名称:Microcontroller C Programming Language 课程总学时:24 讲课:16 实验: ...
- pic单片机延时程序C语言,PIC单片机C语言延时程序和循环子程序实现方法
PIC单片机C语言延时程序和循环子程序实现方法 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观. 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来. 一般的我们都用 for(x=1 ...
- 单片机c语言程序设计实训报告,(整理)单片机C语言程序设计实训100例.doc
(整理)单片机C语言程序设计实训100例.doc .单片机C语言程序设计实训100例基于8051Proteus仿真案例第 01 篇 基础程序设计01闪烁的LED/* 名称闪烁的LED说明LED按设定的 ...
- c语言错误 xef代表什么,单片机C语言代码手册 含100多个经典C程序
1 单片机单片机 C 语言代码手册语言代码手册 1 LED 灯灯 点亮一个点亮一个 LED include void main while 1 P0 0 x01 P2 0 x7d 流水灯闪烁流水灯闪烁 ...
最新文章
- codeforces 贪心+优先队列_贪心(贪婪),在你们家乡话中怎么说·
- 【问题收录】Ubuntu Starting LightDM Display Manager fail
- 神经网络之 CNN 与 RNN 的关系
- Oracle ASM 翻译系列第七弹:高级知识 How many partners?
- 360浏览器极速模式_【小技巧】解除浏览器主页以及,锁定主页~
- 保持你的决心——《传说之下》背后的设计之道
- PowerShell【变量篇】
- ACM_基础知识(二)
- L1-013. 计算阶乘和-PAT团体程序设计天梯赛GPLT
- 最短路计数(松弛操作处理)
- java 加法 溢出_关于数字:Java 8 Unsigned Integer加法和潜在的溢出
- python不能创建字典的是_python试卷-不能创建一个字典的语句
- 51单片机lcd1602显示时间日期
- 全球最大的电子图书馆创世纪下载网址
- 幼儿python编程书籍_少儿Python编程入门书籍分享
- 上云之路千万条,青立方易捷版第一条
- Git内部原理之深入解析环境变量
- 极客日报第 39 期:小米 11 不送充电器;阿里达摩院 2021 十大科技趋势发布!
- 免抠图PNG素材网站
- 近两年学习Python的人越来越多,Python就业形势很好?
热门文章
- 功能Java示例 第6部分–用作参数
- AWS共享资源的警告
- Spring Boot Redis简介
- java ee cdi_Java EE CDI ConversationScoped示例
- 连续锁定2个不同的锁会死锁_研究死锁–第5部分:使用显式锁定
- cometd_CometD:Java Web应用程序的Facebook类似聊天
- java ee技术_Java EE 6与Spring Framework:技术决策过程
- 不删除侦听器–使用ListenerHandles
- 使用CDI的InjectionPoint注入配置值
- 用Java和Java 8创建内部DSL,采用Martin Fowler的方法