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

在电脑串口 助手软件上观察 到的程序执行 现象 如下: 开始... 第 1 个数 十进制:255 十六进制:F F 二进制:111 11111 第 2 个数 十进制:0 十六进制:0 二进制:0 第 3 个数 十进制:655 35 十六进制:F FFF 二进制:111 111111111 1111 第 4 个数 十进制:0 十六进制:0 二进制:0 第 5 个数 十进制:429 4967295 十六进制:F FFFFFFF 二进制:11…

100%1 / 836
【14.6 例程练习和分析。
现在我们编写一个程序来验证 unsigned char,unsigned int,unsigned long 的取值范围
定义两个 unsigned char 变量 a b,a 赋值 255,b 赋值 256,255 256 恰好处于 unsigned char
取值边界。
再定义两个 unsigned int 变量 c dc 赋值 65535,d 赋值 65536,65535 65536 恰好处于 unsigned
int 的取值边界。
unsigned long e fe 4294967295f 42949672964294967295
4294967296 恰好处于 unsigned long 的取值边界。
程序代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
void main() //主函
{
unsigned char a; //定义一个变量 a,并且分配 1 个字节的 RAM 空间
unsigned char b; //定义一个变量 b,并且分配 1 个字节的 RAM 空间
unsigned int c; //定义一个变量 c,并且分配了 2 个字节的 RAM 空间
unsigned int d; //定义一个变量 d,并且分配了 2 个字节的 RAM 空间
unsigned long e; //定义一个变量 e,并且分配 4 个字节的 RAM 空间
unsigned long f; //定义一个变量 f,并且分配 4 个字节的 RAM 空间
a=255; //把 255 赋值给变量 a,a 此时会是什么数?会超范围溢出吗?
b=256; //把 256 赋值给变量 b,b 此时会是什么数?会超范围溢出吗?
c=65535; //把 65535 赋值给变量 c,c 此时会是什么数?会超范围溢出吗?
d=65536; //把 65536 赋值给变量 d,d 此时会是什么数?会超范围溢出吗?
e=4294967295; //把 4294967295 赋值给变量 e,e 此时会是什么数?会超范围溢出吗?
f=4294967296; //把 4294967296 赋值给变量 f,f 此时会是什么数?会超范围溢出吗?
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
View(b); //把第 2 个数 b 发送到电脑端的串口助手软件上观察。
View(c); //把第 3 个数 c 发送到电脑端的串口助手软件上观察。
View(d); //把第 4 个数 d 发送到电脑端的串口助手软件上观察。
View(e); //把第 5 个数 e 发送到电脑端的串口助手软件上观察。
View(f); //把第 6 个数 f 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:255
十六进制:FF
二进制:11111111
2 个数
十进制:0
十六进制:0
二进制:0
3 个数
十进制:65535
十六进制:FFFF
二进制:1111111111111111
4 个数
十进制:0
十六进制:0
二进制:0
5 个数
十进制:4294967295
十六进制:FFFFFFFF
二进制:11111111111111111111111111111111
6 个数
十进制:0
十六进制:0
二进制:0
分析:
通过实验结果,我们知道 unsigned char 变量最大能取值 255,如果非要赋值 256 就会超出范围溢出
后变成了 0。unsigned int 量最大能取值到 65535,如果非要赋值 65536 就会超出范围溢出后变成 0。
unsigned long 变量最大能取值到 4294967295,如果非要赋值 4294967296 就会超出范围溢出后变成了 0。
【14.7 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以
察到不同的变量数值,详细方法请看第十一节内容。