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

//第(2)个 例子 b=x2+y2; //第(3)个 例子 c=50000+ 50000; //第(4)个 例子 d=x3+300 00; e=x3+500 00; //第(2)个 例子改进 之后 t=0; //把变量的高 位和低位 全部清零。 t=x2; //把 x2 的数值先放到一个 l ong 类型的变量 里,让” 加数”跟”保存 变量”类型 一致。 r=0; //把变量的高 位和低位 全部清零。 r=y2; //把 y2 的数…

100%1 / 836
unsigned long g;
unsigned long h;
unsigned int x3=50000;
unsigned long t; //多增加一个 long 类型的变量,用来变换类型
t=0; //把变量的高位和低位全部清零。
t=x3; //把 x3 的数值先放到一个 long 类型的变量里,让”加数”跟”保存变量”类型一致。
g=t+30000;
h=t+50000;
运算结果:g 等于 80000,h 等于 100000。都没有发生溢出
【20.3 例程练习和分析。
现在我们编写一个程序来验证上面讲到的例子
程序代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
void main() //主函
{
unsigned int a; //第(1)个例子
unsigned char x1=0x12;
unsigned char y1=0xfe;
unsigned long b; //第(2)个例子
unsigned int x2=0xfffe;
unsigned char y2=0x12;
unsigned long c; //第(3)个例子
unsigned long d; //第(4)个例子
unsigned long e;
unsigned int x3=50000;
unsigned long f; //第(2)个例子改进之后
unsigned long g; //第(4)个例子改进之后
unsigned long h;
unsigned long t; //多增加一 long 类型的变量,用来变换类型。
unsigned long r; //多增加一 long 类型的变量,用来变换类型。
//第(1)个例子
a=x1+y1;
//第(2)个例子
b=x2+y2;
//第(3)个例子
c=50000+50000;
//第(4)个例子
d=x3+30000;
e=x3+50000;
//第(2)个例子改进之后
t=0; //把变量的高位和低位全部清零。
t=x2; //把 x2 的数值先放到一个 long 类型的变量里,让”加数”跟”保存变量”类型一致。
r=0; //把变量的高位和低位全部清零。
r=y2; //把 y2 的数值先放到一个 long 类型的变量里,让”加数”跟”保存变量”类型一致。
f=t+r;
//第(4)个例子改进之后
t=0; //把变量的高位和低位全部清零。
t=x3; //把 x3 的数值先放到一个 long 类型的变量里,让”加数”跟”保存变量”类型一致。
g=t+30000;
h=t+50000;
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 发送到电脑端的串口助手软件上观察。
View(h); //把第 8 个数 h 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:272
十六进制:110
二进制:100010000
2 个数
十进制:16
十六进制:10
二进制:10000
3 个数
十进制:100000
十六进制:186A0
二进制:11000011010100000
4 个数
十进制:14464
十六进制:3880
二进制:11100010000000
5 个数
十进制:100000
十六进制:186A0
二进制:11000011010100000
6 个数
十进制:65552
十六进制:10010
二进制:10000000000010000
7 个数
十进制:80000
十六进制:13880
二进制:10011100010000000
8 个数
十进制:100000
十六进制:186A0
二进制:11000011010100000
分析:
通过实验结果,发现在单片机上的计算结果和我们的分析是一致的。