单片机中 unsigned char 与 int的区别?

时间:2013.09.05 发布人:otwom

单片机中 unsigned char 与 int的区别?

已解决问题

谷歌otwom用户在2013.09.05提交了关于“辞海单片机中 unsigned char 与 int的区别?”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-11-14T13:01:13。#include<reg52.h>
#defineucharunsignedchar

voiddelay(intm)//延迟1ms
{
inti,j;
for(i=0;i<m;i++)
for(j=0;j<125;j++)
;
}
voidmain()
{
P2=0xfe;
P0=0xc0;
delay(1);
P2=0xff;
}

把延迟函数中的int换成uchar居然出现了错误(八个数码管全亮),怎么回事啊?我眼睛都快看瞎了,还是看不出希望大家能够帮助她。

详细问题描述及疑问:#include<reg52.h>
#defineucharunsignedchar

voiddelay(intm)//延迟1ms
{
inti,j;
for(i=0;i<m;i++)
for(j=0;j<125;j++)
;
}
voidmain()
{
P2=0xfe;
P0=0xc0;
delay(1);
P2=0xff;
}

把延迟函数中的int换成uchar居然出现了错误(八个数码管全亮),怎么回事啊?我眼睛都快看瞎了,还是看不出期待您的答案,我不知道说什么才好,除了谢谢 !

希望以下的回答,能够帮助你。

第1个回答

用户名:a222h报笑输翻临ong  

uchar是一个字节的(范围0-256),uint是两个字来自节的(范围0-65536),只要你的数字范围在0-问答256两个完全可以换(你程序出错不是因为他俩换了),超出256你就得用uint了。当能用uchar的情况下就尽量用uchar,如果你用int的话会浪费资源,降低程序执行效率,

voidmain()
{
P2=0xfe;
P0=0xc0;
delay(1);
P2=0xff;
}
你这个程序编译不出错,运行的话肯定会出错的,这个程序没什么意义啊。程序里加一个while(1)吧,
voidmain()
{
P2=0xfe;
P0=0xc0;
delay(1);
P2=0xff;
while(1);
}
如果你是在实验板上做实验的话,把时间改长一点,不然眼睛分辨不出1ms
你也可以在keil里单步执行看p2的变化。