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

#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函数不起作用了 为什么

首先看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
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-29
  单片机中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进行计算,就没有这个问题。
第2个回答  2015-09-11
他们都为unsigned关键字修饰的类型,unsigned char表示无符号字符型,unsigned int表示无符号整型
他们在计算机中占用的内存大小不同,unsigned char 占8位,即1个字节,能表示的数据范围是0~255,而unsigned int一般占32位,即4个字节,能表示的数据范围是0~65535。
第3个回答  2017-01-16
我的回答只针对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.
第4个回答  2015-09-23
1.unsigned int 范围是65536;
2.unsigned char 范围是256.仅此而已;
3.范围取值不一样用个地方也就不一样了,就只有这个区别而已。
相似回答