找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7109|回复: 14
打印 上一主题 下一主题
收起左侧

关于单片机中什么时候用char型变量?

  [复制链接]
跳转到指定楼层
楼主
ID:278709 发表于 2018-1-24 21:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机中什么时候用char型(记得好像跟单片机八位接口有关系),为什么char型也能赋数值,网上说的char型赋数值本质上和int型一样,但是为什么一样,我需要补充一些什么知识
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:279646 发表于 2018-1-25 18:41 | 只看该作者
准确的说很多时候应该用unsigned char 类型,为什么呢?
首先C语言里面 很多编译器默认int是4个字节,short int是两个字节,而char 相当于short short,它是为一个字节,也是为8位的,刚好对应了51单片机的一个口的管脚数,所以在移位的时候就很方便,不会有别的数据类型的那些麻烦。
为啥说要用unsigned char呢? 因为根据编译器的不同,char到底代表有符号数或者无符号数也不同。那么问题就来了。我们在做位运算的时候就有可能做的是逻辑左右移或者是算数左右移,而我们在51单片机里采用的经常是逻辑左右移,所以你要指定它为 unsigned char,否则它有可能是有符号数,会做算术左右移,这样有时候会给硬件表示带来一些很奇怪的现象。
当然你如果程序里对位操作没怎么使用,那你用其他的数据类型也行的。

评分

参与人数 1黑币 +90 收起 理由
admin + 90 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:84283 发表于 2018-1-25 08:53 | 只看该作者
对于89C51,int类型的变量占据2个字节,char类型的占据1个字节。不过一般大家为了节约空间,大部分会使用char类型,同时89C51是一款8位的单片机,所以推荐使用char类型的变量进行运算,即使我们在代码中写入int类型的变量进行运算,也是编译器编译成为了8位的运算模式进行运算的。体现不了硬件的优势。

评分

参与人数 1黑币 +40 收起 理由
admin + 40 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

地板
ID:84283 发表于 2018-1-25 08:57 | 只看该作者
还有unsigned int(0~65536) 和unsigned char (0~255) 的范围 跟自己实际用到的相符合  
回复

使用道具 举报

5#
ID:279548 发表于 2018-1-25 10:51 | 只看该作者
char型和单片机没啥关系,数据为一个字节
回复

使用道具 举报

6#
ID:279550 发表于 2018-1-25 11:01 | 只看该作者
1、保存-128到127的数字可以用char
2、char和int都是数据类型,自然都可以赋值,只不过保存的数据可以有不同的解释,比如当你printf %d输出时就是当成整型数字,printf %c  就是当成这个数字所代表的字符(由ASCII码表得)

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:123289 发表于 2018-1-25 12:45 | 只看该作者
弄清单片机原理就懂了。希望加强原理方面的知识。
回复

使用道具 举报

8#
ID:279601 发表于 2018-1-25 14:12 | 只看该作者
char定义的字符型变量和int定义的整形变量在一定场合可以互相转换使用的,但两者取值范围不同,char(0~255),int(0~65536)(这里的范围是按无符号变量取得),不过当程式变量定义需求过多时,合理的选择变量类型可以有效的节约ROM空间,

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:111634 发表于 2018-1-25 17:53 | 只看该作者
对于89C51,99%的数据用char型变量!
回复

使用道具 举报

10#
ID:279746 发表于 2018-1-25 19:49 | 只看该作者
char 占用字节比int 要少,够用就好
回复

使用道具 举报

11#
ID:219263 发表于 2018-1-26 16:27 | 只看该作者
stm32单片机 ,char ,int ,short 本质上是一样的,只是数据范围不同
回复

使用道具 举报

12#
ID:280940 发表于 2018-1-30 16:59 | 只看该作者
char 也就是一个字节,8个bit。也是最小的数据类型,如果数据不超过255,可以使用char用来省内存。包括ascii码,也是一个字节以内。某个寄存器8个bit,也可以使用char。
回复

使用道具 举报

13#
ID:111634 发表于 2018-1-30 18:31 | 只看该作者
51单片机最匹配的数据类型是uchar,有些人习惯用int,说明他是半外行!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表