单片机中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.范围取值不一样用个地方也就不一样了,就只有这个区别而已。

单片机中unsigned char 和unsigned int的区别
不同的环境占得字节数可能不同;unsigned int是一个无符号整型数据,而unsigned char则是无符号字符型数据,他们在计算机里所占字节数和int,char完全一样;区别在于unsigned int 与int ( = signed int)型数据范围不同,

单片机中unsigned char 和unsigned int的区别
uchar是一个8位无符号数,表示范围0到255,而uint是十六位无符号数,表示范围0到65535.但是要注意的是8位单片机当中字宽仅有8位,如果用keil编译器的话,假如采用uchar类型数据,它会给你分配一个寄存器(8位);但是如果采用uint的话,必须要两个寄存器才能完全表达数据的大小。单片机从寄存器取操作...

单片机中unsigned char 和unsigned int的区别,做流水灯实验,延时函数问 ...
unsigned char,8位,最大值255,unsigned int,16位,最大值65535,j的最大值只有255,所以永远不会满足j<1827的条件,当然就一直循环不结束了。

...语言对于200这个数,unsigned char 与unsigned int 有什么区别?
单片机语言对于200这个数,unsigned char 与unsigned int 有什么区别?定义成前者,只用一个字节来存放200,而定义成后者,需要用2个字节存放。仅此而己。但是,在写程序时,如果变量小于256,最好定义成前者,这样,可以节省一个RAM单元。而定义成后者,因高8位(高位字节)是0,等于浪费一个RAM单元。因...

C语言 unsigned char 和unsigned int什么区别和联系?分别多少位?求简介...
unsigned char为无符号字符类型,而unsigned int为无符号整数类型。unsigned char为8位,多数情况下unsigned int为32位。但随系统的不同它的位数可能变化,有时是与系统位数对齐的,也就是说对8位的系统,它是8位,16位系统则为16位,32位的系统则为32位。

单片机编程中经常使用unsigned char这个数据类型?而且还用它来保持...
因为单片机的内存小, unsigned char是一个字节,int比前者占空间大,而很多情况下,一个字节来定义变量已经足够使用,比如只要变量大小在0~255之间时,用unsigned char占一个字节,用int虽然也可以囊括0~255,但是占的内存空间就很大。为了节约内存,所以就经常使用unsigned char ...

单片机的unsigned char jp()是什么意思?
单片机中unsigned char 与 unsigned int的区别如下: unsigned char 是无符号字符,数据长度是8位

keil编程时的unsigned int 跟unsigned char什么区别啊
没影响,但是我们一般在数值不超过65535的时候是用uchar型的,不然浪费存储空间.楼上的说的有错,uint型是占两个字节取值范围 0~65535,而不是四个字节.uchar 占一个字节 取值 0~255,

unsigned char,unsigned int ,char的区别
字节)int字节数因编译器不同而不同,可能是2B(TC),可能是4B(VC);char一般用来定义一个字符,实际上存储的是该字符的ASCII码,也可以表示一个数字,你可以用printf(“%d”,c);来输出字符c表示的ASCII码值;单片机c中,使用unsigned char可以减少内存消耗,因为单片机内存容量有限。

C语言中 unsigned char和unsigned int的区别
首先就是大小都不一样的啊。。int类型的值可以比char类型的值大的多的。。unsigned char只能到256,而unsigned int却可以达到65536的。。这是针对32位机来说。

相似回答