从单片机基础到程序框架(全集 2019pdf版).pdf - 第116页

/*---C 语言学习区 域的开始。 ----- ----------- ---------- ----------- ---------- */ void main( ) //主函数 { unsigned c har a; unsigned c har b; unsigned c har c; unsigned c har d; unsigned c har e; unsigned c har f; unsigned c har g=…

100%1 / 836
0 时,最多只是运算出错,但是不至于整个程序会崩溃,这样我心里就有了一个底,当哪天我某个程序崩
跑飞时,我至少可以排除了“除数为 0”这种情况,引导我从其它方面去 bug。
(2)当被除数小于除数时。商等于 0。比如:
unsigned char c;
c=7/10; //c 的结果是 0。
(3)当被除数等于除数时。商等于 1。比如:
unsigned char d;
d=10/10; //d 的结果是 1。
(4)当被除数大于除数时。商大于 0。比如:
unsigned char e;
unsigned char f;
e=10/4; //e 的结果是 2,大 0。
f=10/3; //f 的结果是 3,大 0。
【27.4 整除求商的自除简写。
当被除数是“保存变量”时,存在自除求商的简写。
“保存变量”=“保存变量” / “除数” ;
上述自除求商的简写如下
“保存变量” / =“除数” ;
比如:
unsigned char g;
g/=5; //相当 g=g/5;
【27.5 整除求商有没有“自除 1”的特殊写法?】
加减法有自 1“++g”和自 1“g--”的特殊写法,但是求商的除法不存在这种自除 1 特殊写法,
因为一个数除以 1 的商还是等于它本身,所以求商的自除 1 没有任何意义,因此 C 语言语法中没有这种特殊
写法。
【27.6 整除求商的溢出。
除法的溢出规律跟加法的溢出规律是一样的所以不再多举例子。在实际项目中,为了避免一不小心
溢出的问题,我建议,不管加减乘除,凡是参与运算的变量全部都应该转化 unsigned long 变量,转化
方法已经在前面章节讲过,不再重复讲解这方面的内容。
【27.7 例程练习和分析。
现在编写一个程序来验证刚才讲到的整除求商
程序代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
void main() //主函数
{
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
unsigned char e;
unsigned char f;
unsigned char g=10; //初始化为 10
unsigned char y=0; //除数变量初始化为 0。
//(1)当除数等 0 时。
a=23/y;
b=23/0; //这行代码在编译时会引起一条警告“Warning”,暂时不用管它。
//(2)当被除数小于除数时。
c=7/10;
//(3)当被除数等于除数时。
d=10/10;
//(4)当被除数大于除数时。
e=10/4;
f=10/3;
//(5)整除求商的简写。
g/=5; //相当 g=g/5;
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
View(b); //把第 2 个数 b 发送到电脑端的串口助手软件上观察。
View(c); //把第 3 个数 c 发送到电脑端的串口助手软件上观察。
View(d); //把第 4 个数 d 发送到电脑端的串口助手软件上观察。
View(e); //把第 5 个数 e 发送到电脑端的串口助手软件上观察。
View(f); //把第 6 个数 f 发送到电脑端的串口助手软件上观察。
View(g); //把第 7 个数 g 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:255
十六进制:FF
二进制:11111111
2 个数
十进制:1
十六进制:1
二进制:1
3 个数
十进制:0
十六进制:0
二进制:0
4 个数
十进制:1
十六进制:1
二进制:1
5 个数
十进制:2
十六进制:2
二进制:10
6 个数
十进制:3
十六进制:3
二进制:11
7 个数
十进制:2
十六进制:2
二进制:10
分析:
通过实验结果,发现在单片机上的计算结果和我们的分析是一致的。
【27.8 如何在单片机上练习本章节 C 语言程序?】