Chinaunix首页 | 论坛 | 博客
  • 博客访问: 156602
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-27 15:17
文章分类

全部博文(20)

文章存档

2016年(1)

2015年(19)

我的朋友

分类: C/C++

2015-10-31 12:59:41

http://blog.sina.com.cn/s/blog_917f16620101es0l.html

问题描述:
利用51核的单片机编程时,有时需要确切知道某个数值的字节数大小(如AD采集时采集到的AD值会存放在n位的数值),除了查找Keil C51的手册进行验证,另一种就是直接用sizeof()查看。
    sizeof():关于sizeof()的介绍网上有很多详细的资料,这是一个操作符,所以使用时不必添加头文件。可以对数值和类型进行操作,返回的值是size_t类型。size_t类型在C51编译器的stddef.h中如是定义:
#ifndef _SIZE_T
 #define _SIZE_T
 typedef unsigned int size_t;
#endif
    一点问题:首先使用sizeof()得到类型的字节长度,然后用printf通过串口将数据打印在我电脑上。
    使用
    printf("\n %d %d %d",sizeof(int),sizeof(short),sizeof(char));//打印结果为 514 256 0
    sizeof()返回的是size_t类型,这个就是unsigned int了,用%d格式化打印本应当是没问题的。
    于是,修改后:
  unsigned int j1,j2,j3;
  j1 = sizeof(int);
  j2 = sizeof(short);
  j3 = sizeof(char);
  printf("\n %d %d %d",j1,j2,j3);//此时打印结果为 2 2 1
    这里修改后,首先将sizeof(int),sizeof(short),sizeof(char)隐式转换成类型unsigned int了,然后再用%d格式化打印就可以。这个问题不知道是何原因。


阅读(5543) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~