原标题:51单片机之C语言-4.4运算符及表达式

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 =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语言除法符号,51单片机之C语言-4.4运算符及表达式相关推荐

  1. 51单片机c语言除法符号,单片机c语言教程:C51运算符和表达式

    上两课说了常量和变量,先来补充一个用以重新定义数据类型的的语句吧.这个语句就是 typedef,这是个很好用的语句,但我却不常用它,通常我定义变量的数据类型时都是使 用标准的关键字,这样别人能很方便的 ...

  2. c语言注释符号 井号,读c语言深度剖析 -- 符号 注释符号

    标准C语言的基本符号 ,逗号  >右尖括号  . 圆点 !感叹号   :分号   | 竖线   :冒号  /斜杠   ?问号  \反斜杠 '单引号  ~波折号  "双引号  #井号   ...

  3. c语言常用符号优先级问题,【C语言】符号优先级

    一. 问题的引出 今天看阿里的笔试题,看到一个非常有意思的题目,但是很容易出错. 题目:如下函数,在32bit系统foo(2^31-3)的值是: Int foo(int x) { return x&a ...

  4. 笔记整理1----Java语言基础(一)01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法

    01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法 第01天 java基础知识 今日内容介绍  Java概述.helloworld案例  工 ...

  5. c语言中符号起什么作用,C语言中的符号 和 | 是什么意思?

    &: 在C语言中有两种意思,一种是取地址符,是单目运算符:另一种是位运算符,表示"按位与",是双目运算符.|: 是位运算符,表示"按位或". 资料扩展 ...

  6. c语言无符号整型右移,c语言 java 有符号数,无符号数. 左移,右移运算

    1: c语言区分有符号数,无符号数.有符号数是符号位在首位,无符号数首位就是普通位数. java只有有符号数,换句话说java二进制中首位都是符号位.0正1负. 2: 左移在所有语言中只是左移,不存在 ...

  7. c语言除法在全局区,深入C语言内存区域分配(进程的各个段)详解

    C语言可执行代码结构 名称 内容 代码段 可执行代码.字符串常量 数据段 已初始化全局变量.已初始化全局静态变量.局部静态变量.常量数据 BSS段 未初始化全局变量,未初始化全局静态变量 栈 局部变量 ...

  8. c语言多行注释的是,c语言多行注释符号是什么_后端开发

    浅谈PHP面向对象的继承_后端开发 本篇文章给大家介绍一下PHP面向对象的继承.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. c语言多行注释符号是什么? c语言多行注释符号是&qu ...

  9. c语言常数-ox6a是什么意思,C语言第2讲-数据类型运算符和表达式.pdf

    C语言第2讲-数据类型运算符和表达式 高级语言程序设计 (C Programming) 丁嵘 第二讲:数据类型.运算符和表达式 本章目录  2.1 基本符号  2.2 C语言的数据类型  2.3 ...

最新文章

  1. caffe在线可视化(转)
  2. awk或者sed识别和替换数据中最后一列的缺失值(转载)
  3. Android11MIUI12,安卓11版MIUI12来了,3款已适配
  4. layer弹出层扩展自定义样式
  5. SpringCloud工作笔记103---Mybatis-plus使用注解 @TableField(exist = false) 注明非数据库字段属性
  6. ubuntu下python3及idle3的安装
  7. 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...
  8. 重磅!容器存储解决方案蓝皮书发布
  9. 51单片机——多文件的建立
  10. 兰勃特等角圆锥(Lambert Conformal Conic)投影正反变换
  11. 【转载】设备\Device\Harddisk0\D 有一个不正确的区块
  12. 复杂 Excel 表格导入导出的最简方法
  13. 《费曼学习法》读书笔记
  14. 机器学习——DEAP数据集
  15. 仿【咪咕动漫】列表下拉刷新上拉加载
  16. 鸿海精密收购东芝闪存业务志在必得 或出价270亿美元
  17. 2020张宇1000题【好题收集】【第四章:多元函数微分学】【第五章:二重积分】
  18. 高德地图插件的简单使用
  19. Linux设置ip地址不更改
  20. 8卡gpu服务器是8个芯片,北京8卡GPU服务器厂商

热门文章

  1. 学python多大年龄可以学车_考驾照的最小年龄,多少岁可以考驾照
  2. 使用hexo+github pages搭建博客
  3. 计算机图形学【GAMES-101】13、光场、颜色与感知
  4. 服务器导购:选购服务器应看哪些配置参数
  5. thinkphp6 404找不到网页错误常见情况总结(持续更新)
  6. CocosCreator 打包微信小游戏
  7. Zhong__Python lambda()
  8. Unity 使用LineRenderer做画线游戏
  9. 宝塔Linux面板配置教程
  10. python求几何平均_R语言的几何平均数,调和平均数,平方平均数