51单片机之C语言-4.4运算符及表达式
前面三节实际是讲如何定义一个数据类型,所谓数据类型其实就是不同存储空间的形状,也就是不同单元格的组合方式。既然定义了数据类型,我们的目的当然是如何使用它们,比如赋值,比较大小,移位变化,等待。简单的讲就是”谁”-数据类型, “怎么样”-如何运算。往我们定义的单元格中填充内容。既然要运算当然有配套的运算符和表达式,现在将各种运算符及表达式总结如表4-4-1所示。
这里我们选取几个在单片机编程中比较常见的运算符进行讲解。
(1) 自增运算和自减运算
对于运算符相信大家非常熟悉,这里不细讲。值得提醒一下的是,自增和自减运算符,
++a:a的值先增加1后,再参与其他运算
a++: a的值先参与其他运算,再使a的值增加1
--a: a的值先减小1后,再参与其他运算
a--: a的值先参与其他运算,再使a的值减小1
这里我们举一个例子:
a = 1;
b = 0;
a = ++b;
与
a = 1;
b = 0;
a = b++;
现在我们在VS2013中验证一下输出结果,
#include
void main(void)
{
int a, b;
a = 1;
b = 0;
b = a++;
printf("a=%d\nb=%d\n",a,b);//输出结果a=2,b=1
a = 1;
b = 0;
b = ++a;
printf("a=%d\nb=%d\n",a,b);//输出结果a=2,b=2
system("pause");
}
(2)赋值运算
赋值运算符很好理解,需要注意的是书写形式,比如
a = a + 1;
很多情况下我们看到的表达式是把运算符”+”放到”=”前面,然后把第二个a去掉
a += 1;
(3)关系运算符
在关系运算符中,在比较a与b是否相等的时候,使用a==b,这里容易漏掉一个等号
而a=b表示把b的值赋给a
(4)逻辑运算
参加逻辑运算的对象,用”0”表示假,用”非0”表示真.
逻辑运算的运算规则可见的归纳为:
逻辑与-同真为真,逻辑或同假为假,逻辑非遇假变真,遇真变假
(5)位运算
左移的规则是将二进制数向左移动若干位,左边移走的高位被丢弃,右边被空出来的低位补零。
右移的规则是将二进制数向右移若干位,右移与被移动的数据是否带符号有关。对于无符号整数来讲,左端空出的高位全部补0.
这里我们不讨论带符号的位移
例4-4-1 通过位移的方法创建流水灯
#include "reg52.h"
typedef unsigned char uchar;
void delayUs(uchar t);
void delayMs(uchar t);
void main(void)
{
uchar LED=0X80;//10000000
uchar i;
while(1)
{
for (i=0;i<8;i++)
{
P1= ~LED;//按位非
LED>>=1;
delayMs(100);
}
LED=0X80;
}
}
void delayUs(uchar t)
{
while(--t);
}
void delayMs(uchar t)
{
while(--t)
{
delayUs(245);
delayUs(245);
}
}
(6)逗号和条件运算符
逗号运算符是所有运算符中优先级最低的,运算的结果值是最后一个表达式的值。例如:
int a,b,c,d;
d=(a=1,b=a+2,c=b+3);
printf("d=%d\n",d)
那么以上输出的结果为6.在很多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用与循环语句(for语句)中。
例如:
for(s=0,i=1;i<=100;s+=i,i++)
条件表达式的一般形式为:
表达式1 ?表达式2 :表达式3
条件表达式中含有三个操作对象,它们都是表达式。一般,表达式1是关系表达式或逻辑表达式,用于描述条件表达式中的条件,根据条件的真假判断是进行表达式2的运算还是进行表达式3的运算。表达式2和表达式3可以是常量,变量或表达式如算术表达式,关系表达式,赋值表达式和逻辑表达式等。
一般情况下,条件表达式与结构程序设计中的if语句可以进行相互替换。
例如:
max = (a>b) ? a : b
用if语句表示为:
if (a>b)
{
max=a;
}
else
{
max=b;
}
但不是所有的条件语句都能替换,比如
if (a>b)
{
printf("%d",a);
}
else
{
printf("%d",b);
}
这里不能使用以下语句替换,
a>b?printf("%d",a) : printf("%d",b);
为什么?因为条件表达式的结果是一个值,要将这个值赋给一个变量或以一个值的形式输出,而上面的形式表示的是,如果a>b为真,就将a以整型的形式输出,否则将b以整型的形式输出,而在实际编程过程中无法将其值输出。
表4-4-1 运算符及表达式总结表?
51单片机C语言运算符表达 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)