单片机中unsigned char 和unsigned int的区别

#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintvoi... #include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uchar z);
uchar prem;
void main()
{
prem=0xfe;
P0=prem;
while(1)
{
prem=_cror_(prem,1);
delay(100);
P0=0XFF;
delay(100);
P0=prem;
}

}
void delay(uchar z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=100;j>0;j--);
}
在这个程序中把下面的delay函数中的uint改成uchar有很大区别,为什么?
改过之后delay函数不起作用了 为什么
展开
 我来答
匿名用户
2013-11-24
展开全部
首先看int和char,分别是整型数据和字符型数据,在计算机里面分别占1个和2个字节空间(TC环境),不同的环境占得字节数可能不同;unsigned int是一个无符号整型数据,而unsigned char则是无符号字符型数据,他们在计算机里所占字节数和int,char完全一样;区别在于unsigned int 与int ( = signed int)型数据范围不同,无符号型数据没有正负之分,而带符号数因为需要用一个数据位存放符号位,所以范围要比无符号数据小,这样,你就能知道unsigned char 和char的区别了!我顺便说一下这四个数据类型各自的范围吧!int (= signed int) -32768 ~ +32767unsigned int 0 ~ 65535char (=signed char) -128 ~ +127
unsigned char 0~255
传薪网络
推荐于2016-05-29 · TA获得超过1355个赞
知道小有建树答主
回答量:635
采纳率:92%
帮助的人:242万
展开全部
  单片机中unsigned char 与 unsigned int的区别如下:
  unsigned char 是无符号字符,数据长度是8位,表示值范围从0~255
  unsigned int 是无符号整数,数据长度是16位(或者32位,看单片机的型号而定),表示范围从0~65535(或者0~4294967295)
  另外,由于表示值的范围不同,导致它们的计算也会有一些性能的不同。主要体现在数据对齐问题上。cpu在将unsigned char和unsigned int进行混合运算的时候,会先讲前者提升为unsigned int,然后再进行计算。而直接两个unsigned int进行计算,就没有这个问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wchyumo2011
2015-09-11 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2815万
展开全部
他们都为unsigned关键字修饰的类型,unsigned char表示无符号字符型,unsigned int表示无符号整型
他们在计算机中占用的内存大小不同,unsigned char 占8位,即1个字节,能表示的数据范围是0~255,而unsigned int一般占32位,即4个字节,能表示的数据范围是0~65535。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沫神钢虚1F
2017-01-16 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:59%
帮助的人:1125万
展开全部
我的回答只针对C/C++语言,不知道你学的是不是这两种语言。 在C/C++中char型等价于整型数据,占一个字节,8个比特位。在语言中默认的就是signed char ,其范围 对应整数-128~+127,而unsigned char代表的是无符号的字符型,对应的整数范围为0~255. 例如: #include<iostream> using namespace std; int main() { char ch='a'; cout<<(int)ch<<endl; return 0; } 输出的就是97,即小写字母a,对应的十进制数为97.A对应为65.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友23bba7f0
2015-09-23 · TA获得超过4173个赞
知道小有建树答主
回答量:660
采纳率:85%
帮助的人:184万
展开全部
1.unsigned int 范围是65536;
2.unsigned char 范围是256.仅此而已;
3.范围取值不一样用个地方也就不一样了,就只有这个区别而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式