打印

请教程序问题!

[复制链接]
1233|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
182006|  楼主 | 2007-5-27 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ui, TE, FOR, TI
有些资料上有这样的语句:
uchar   i;
for(i=0;i<8;i++)
{
b=temp>>(8-i);
b=temp<<i;
…… 

请问i明明是用来记数,但为什么定义为uchar类型而不是uint呢?
有什么好的**方法能明确地辨别它们吗(uchar/uint)?

相关帖子

沙发
mohanwei| | 2007-5-27 20:33 | 只看该作者

因为普通的51单片机只支持无符号运算。

带符号运算需要调用库函数,效率比较低。

可以在变量前面加“ui_”,"uc_"……不过在一般的小小的单片机程序里没必要这么做。

使用特权

评论回复
板凳
182006|  楼主 | 2007-5-27 20:47 | 只看该作者

感谢mohanwei!

谢谢回帖!!
我想问就是那个例子中怎么就用int,怎么就用char呢?

使用特权

评论回复
地板
huweiping| | 2007-5-27 21:09 | 只看该作者

只是为了更好的区分数据类型,使一眼就能看数据类型

uchar表示unsigned char 无符号、无正负之分 的字符数
uint表示unsigned int  无符号、无正负之分 的整数

使用特权

评论回复
5
182006|  楼主 | 2007-5-27 21:17 | 只看该作者

谢谢,还是不太懂,补充一下:

i++是用来从1加到8,这个i应该是属于整数的加减运算,所以应该定义为int整数型呀,而char是字符型,怎么书中用char来定义这个整数i呢?

使用特权

评论回复
6
平常人| | 2007-5-27 21:47 | 只看该作者

uchar是8位的而uint是16位的,从1到8只需uchar就可以表示了

在8位单片机中,处理8位的数据当然要比处理16位数据又快又省存储啦。

使用特权

评论回复
7
gyt| | 2007-5-27 21:52 | 只看该作者

节省资源

单片机的资源很紧张,像这样的计数器用8位就够了。char只用一个字节,如果用int就用了2个字节,没必要。何况在计数时,单字节加比双字节加指令数少。不管是char还是int,在简单加法计数时,功能是完全一样的。

使用特权

评论回复
8
DEF| | 2007-5-27 22:44 | 只看该作者

补充一下

在C语言中
int类型为CPU寄存器位数,也就是说在32位中int为32位,在64位中int为64位。
但C对int有所限制必须大于或等于16位所以在8位机中其为16位。

而char类型就永远都是8位。

使用特权

评论回复
9
zhaoyu2005| | 2007-5-28 08:32 | 只看该作者

大家别费口舌了

不知LZ是自学还是没好好学,连char和int的含义都分不清,和数学的整数混淆,反正是懒蛋加马虎蛋,这次请分清:char和int是计算机使用的数据类型,char是字符型数据(8bit),int是整型数据(16bit),看清了不是整数,平常所说的的整数是相对小数而言的,是数字的一种形式

使用特权

评论回复
10
sklar| | 2007-5-28 10:14 | 只看该作者

汗!!!!

使用特权

评论回复
11
182006|  楼主 | 2007-5-28 12:46 | 只看该作者

好!终于彻底弄明白了!

好!终于彻底弄明白了!
zhaoyu2005批评的对.感谢各位老大耐心教诲,

使用特权

评论回复
12
gyt| | 2007-5-28 20:50 | 只看该作者

搞清楚了就好:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

127

帖子

0

粉丝