您的位置:控制工程论坛网论坛 » 教程与手册 » 第六课 C51 运算符和表达式

xilinxue

xilinxue   |   当前状态:在线

总积分:16186  2025年可用积分:0

注册时间: 2008-06-26

最后登录时间: 2020-03-22

空间 发短消息加为好友

第六课 C51 运算符和表达式

xilinxue  发表于 2008/9/24 12:53:29      712 查看 0 回复  [上一主题]  [下一主题]

手机阅读

上两课说了常量和变量,先来补充一个用以重新定义数据类型的的语句吧。这个语句就是 typedef,这是个很好用的语句,但我却不常用它,通常我定义变量的数据类型时都是使 用标准的关键字,这样别人能很方便的研读你的程序。 如果你是个DELPHI 编程爱好者或是DELPHI程序员,你对变量的定义也许习惯了DELPHI 的关键字,如 int  类型常会用关键字 Integer 来定义,在用 单片机 c语言时你还想用回这个的话,你能这样写:

typedef  int  integer;


integer  a,b;


  这两句在编译时,其实是先把 integer 定义为 int,在以后的语句中遇到 integer 就用 int 置换,integer 就等于 int,所以 a,b 也就被定义为 int。typedef 不能直接用来定义变量,它 只是对已有的数据类型作一个名字上的置换,并不是产生一个新的数据类型。下面两句就是一个错误的例子:


typedef  int  integer;


integer  =  100;


  使用 typedef 能有方便程序的移植和简化较长的数据类型定义。用 typedef 还能定义结 构类型,这一点在后面详细解说结构类型时再一并说明。typedef 的语法是


typedef  已有的数据类型    新的数据类型名 运算符就是完成某种特定运算的符号。运算符按其表达式中与运算符的关系可分为单目运算符,双目运算符和三目运算符。单目就是指需要有一个运算对象,双目就要求有两个运 算对象,三目则要三个运算对象。表达式则是由运算及运算对象所组成的具有特定含义的式 子。C 是一种表达式语言,表达式后面加“;”号就构成了一个表达式语句。


赋值运算符


 对于“=”这个符号大家不会陌生的,在 C 中它的功能是给变量赋值,称之为赋值运算 符。它的作用不用多说大家也明白,就是但数据赋给变量。如,x=10;由此可见利用赋值运 算符将一个变量与一个表达式连接起来的式子为赋值表达式,在表达式后面加“;”便构成 了赋值语句。使用“=”的赋值语句格式如下:


变量  =  表达式; 示例如下


a  =  0xFF;  //将常数十六进制数 FF 赋于变量 a


b  =  c  =  33;  //同时赋值给变量 b,c d  =  e;  //将变量 e 的值赋于变量 d


f  =  a+b;  //将变量 a+b 的值赋于变量 f 由上面的例子能知道赋值语句的意义就是先计算出“=”右边的表达式的值,然后将得到 的值赋给左边的变量。而且右边的表达式能是一个赋值表达式。


在一些朋友的来信中会出现“==”与“=”这两个符号混淆的错误原码,问为何编译报 错,一般就是错在 if (a=x)之类的语句中,错将“=”用为“==”。“==”符号是用来进行相 等关系运算。


算术,增减量运算符


对于 a+b,a/b 这样的表达式大家都很熟悉,用在 C 语言中,+,/,就是算术运算符。单片机c语言 中的算术运算符有如下几个,其中只有取正值和取负值运算符是单目运算符,其它则都是双 目运算符:


+    加或取正值运算符




-    减或取负值运算符


*    乘运算符


/    除运算符


%    取余运算符 算术表达式的形式:


表达式 1    算术运算符    表达式 2 如:a+b*(10-a),  (x+9)/(y-a)


除法运算符和一般的算术运算规则有所不一样,如是两浮点数相除,其结果为浮点数,如


10.0/20.0 所得值为 0.5,而两个整数相除时,所得值就是整数,如 7/3,值为 2。像别的语 言一样 C 的运算符与有优先级和结合性,同样可用用括号“()”来改变优先级。这些和我们 小时候学的数学几乎是一样的,也不必过多的说明了。


++    增量运算符


--    减量运算符


这两个运算符是 C 语言中特有的一种运算符。在 VB,PASCAL 等都是没有的。作用就是 对运算对象作加 1 和减 1 运算。要注意的是运算对象在符号前或后,其含义都是不一样的,虽 然同是加 1 或减 1。如:I++,++I,I--,--I。


I++(或 I--)    是先使用 I 的值,再执行 I+1(或 I-1)


++I(或--I)    是先执行 I+1(或 I-1),再使用 I 的值。增减量运算符只允许用于变量的运算中,不能用于常数或表达式。 先来做一个实验吧。学习运算符和另外一些知识时,我们还是给我们的实验板加个串行


接口吧。借助电脑转件直观的看单片机的输出结果,如果你用的是成品实验板或仿真器,那你就能跳过这一段了。


在制作电路前我们先来看看要用的  MAX232,这里不去具体讨论它,只要知道它是 TTL和 RS232 电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,能省一点,效 果也不错 (如有兴趣能查看 网站中的相关资料)。下图就是 MAX232 的基本接线图。






我制作小玩意时很有用。串行口号,波特率调好,打开串行口,单片机上电,就能在接收区看 到不断出现的“Hello  World!”。一定要先打开软件的串行口,再把单片机上电,不然可能因字符不对齐而看到乱码哦。


点击看大图


图 6-4    调试结果




1楼 0 0 回复