keil_4/MDK各种数据类型占用的字节数
笔者正在学习uCOS-II,移植到ARM时考虑到数据类型的定义,但对于Keil MDK编译器的数据类型定义还是很模糊,主要就是区分不了short int、int、long 和long int占用多少字节。为了得到一个权威的答案,改用编译器自身得出。
一、先定义几个变量,用于存放各数据类型的字节数。
//#include<LPC214x.H>
#include<stdio.h>
unsigned char a,b,c,d,e,f,g;
main()
{
a=sizeof(char);
b=sizeof(short int);
c=sizeof(int);
d=sizeof(long);
e=sizeof(long int);
f=sizeof(float);
g=sizeof(double);
while(1);
}
三、查看各地址存放的值。View---memory Window。


由上图可知得出:
指针类型 * 统一为 4字节
char占用1个字节
short int占用2字节
int占用4字节
long占用4字节
long int占用4字节
float占用4字节
double占用8字节
我们即可这样定义宏:
typedef unsigned char uint8; // 无符号8位整型变量 typedef signed char int8; // 有符号8位整型变量 typedef unsigned short uint16; // 无符号16位整型变量 typedef signed short int16; // 有符号16位整型变量 typedef unsigned int uint32; // 无符号32位整型变量 typedef signed int int32; // 有符号32位整型变量 typedef float fp32; // 单精度浮点数(32位长度) typedef double fp64; // 双精度浮点数(64位长度)
②查看各变量的存放地址。View---Symbols Window。 下面是real view官方文档的说明:
|
常数 |
意义 |
值 |
十六进制值 |
|
CHAR_MAX |
char的最大值 |
255 |
0xFF |
|
CHAR_MIN |
char的最小值 |
0 |
0x00 |
|
SCHAR_MAX |
signed char的最大值 |
127 |
0x7F |
|
SCHAR_MIN |
signed char的最小值 |
–128 |
0x80 |
|
UCHAR_MAX |
unsigned char的最大值 |
255 |
0xFF |
|
SHRT_MAX |
short的最大值 |
32 767 |
0x7FFF |
|
SHRT_MIN |
short的最小值 |
–32 768 |
0x8000 |
|
USHRT_MAX |
unsigned short的最大值 |
65 535 |
0xFFFF |
|
INT_MAX |
int的最大值 |
2 147 483 647 |
0x7FFFFFFF |
|
INT_MIN |
int的最小值 |
–2 147 483 648 |
0x80000000 |
|
LONG_MAX |
long的最大值 |
2 147 483 647 |
0x7FFFFFFF |
|
LONG_MIN |
long的最小值 |
–2 147 483 648 |
0x80000000 |
|
ULONG_MAX |
unsigned long的最大值 |
4 294 967 295 |
0xFFFFFFFF |
|
LLONG_MAX |
long long的最大值 |
9.2E+18 |
0x7FFFFFFF FFFFFFFF |
|
LLONG_MIN |
long long的最小值 |
–9.2E+18 |
0x80000000 00000000 |
|
ULLONG_MAX |
unsigned long long的最大值 |
1.8E+19 |
0xFFFFFFFF FFFFFFFF |
附加:
四: 结构体成员引用,往往通过内存偏移计算,引用另外成员变量。这时需注意的有:
eg:
sturct link{ unsinged int *a;
unsigned int *b;
unsigned int c;
unsigend int d;
}; struct link link1;
unsigned int e=link1->c; uint * f= &link->a;
uint *g= *(f+1);// **g=link1->b
成员变量偏移计算注意:1 得到一个成员函数的内存地址,步进决定于运算成员的数据类型,如(g=f+1,1表示一个单位int长度,uint 占2字节),这个最终得参考内存对齐原理,对齐了肯定遵从上规则
2 所取的内存运算后的地址赋值给g,g的类型必须跟原基地址(原成员)的一致。 否则,运算出错
keil_4/MDK各种数据类型占用的字节数的更多相关文章
- c# 数据类型占用的字节数
最近一直在使用C#中的关于各种数据类型转化为字节或者字节转化为各种数据类型进行数据解析.但是在此之前必须知道各种数据类型在字节中占的字节数. 所以在此归总. bool -> System.Boo ...
- [转] c# 数据类型占用的字节数
http://www.cnblogs.com/laozuan/archive/2012/04/24/2467888.html
- Java各种类型占用的字节数
Java 占用字节数 转自:http://www.blogjava.net/stevenjohn/archive/2013/10/18/405416.html 数据类型 大小(二进制位数) 范围 默认 ...
- JAVA基本数据类型所占字节数是多少?
byte 1字节 short 2字节 int 4字节 long 8字节 ...
- java基本数据类型所占字节数
JAVA基本数据类型所占字节数是多少?(32位系统) byte 1字节 short 2字节 int 4字节 ...
- 10055 - Hashmat the Brave Warrior & 各数据类型所占字节数 (C语言)
Problem A Hashmat the brave warrior Input: standard input Output: standard output Hashmat is a brave ...
- 编码占用的字节数 1 byte 8 bit 1 sh 1 bit 中文字符编码 2. 字符与编码在程序中的实现 变长编码 Unicode UTF-8 转换 在网络上传输 保存到磁盘上 bytes
小结: 1.UNICODE 字符集编码的标准有很多种,比如:UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig 等: 2 服务器->网页 utf-8 ...
- 转:C/C++基本数据类型所占字节数
参考:http://blog.csdn.net/vast_sea/article/details/8076934 关于这个基本的问题,很早以前就很清楚了,C标准中并没有具体给出规定那个基本类型应该是多 ...
- C/C++基本数据类型所占字节数
关于这个主要的问题,非常早曾经就非常清楚了,C标准中并没有详细给出规定那个基本类型应该是多少字节数,并且这个也与机器.OS.编译器有关,比方相同是在32bits的操作系统系,VC++的编译器下int类 ...
随机推荐
- 最长回文 HDU - 3068 manacher 模板题
题意:找串的最长回文字串(连续) 题解:manacher版题 一些理解:首位加上任意两个字符是为了判断边界. 本算法主要是为了 1.省去奇偶分类讨论. 2.防止形如aaaaaaa的串使得暴力算法蜕化为 ...
- AIX 7命令行weblogic建域流水
$ ./config.shUnable to instantiate GUI, defaulting to console mode. <------------------- Fusion M ...
- function &w(){}
CodeIgniter 3.1.0 <?php //\system\core\Common.php function &load_class($class, $directory = ' ...
- ndk http://www.th7.cn/Program/Android/201412/334955.shtml
http://www.th7.cn/Program/Android/201412/334955.shtml http://ruikye.com/2014/08/30/androidstudio_ndk ...
- 5 Tips for Building a Winning DevOps Culture
对于企业来说,前途未卜的改变往往很难发生,就像航海一样,重复的往往是久经验证的安全航线,这点在DevOps文化的构建上同样如此.近日,CA Technologies的高级策略师Peter Waterh ...
- 【find -exec】查找并复制文件
find . -name *run_server* -type f -exec cp {} /tmp/ \;
- 程序猿职业生涯中的 Norris 常数
我的朋友Clift Norris发现了一个基本常数.我称之为Norris常数,一个未经培训的程序猿在他或她遇到瓶颈之前能写出的平均代码量.Clift预计这个值是1500行. 超过这个数以后,代码会变得 ...
- MySQL纯透明的分库分表技术还没有
MySQL纯透明的分库分表技术还没有 种树人./oneproxy --proxy-address=:3307 --admin-username=admin --admin-password=D033 ...
- 3.对神经网络训练中Epoch的理解
代表的是迭代的次数,如果过少会欠拟合,反之过多会过拟合 EPOCHS 当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch. 然而,当一个 epoch 对于计算机而言太 ...
- 十天精通CSS3(11)
Media Queries——媒体类型(一) 随着科学技术不断的向前发展,网页的浏览终端越来越多样化,用户可以通过:宽屏电视.台式电脑.笔记本电脑.平板电脑和智能手机来访问你的网站.尽管你无法保证一个 ...