base之basictypes.h基本数据类型 (1)
2016-07-08 17:31
267 查看
定义了基本的数据类型,比如int8, int16, int32以及基本数据类型的范围
关键在于数据类型占多少字节,比如char占1个字节,int占4个字节。
至于int, long,这两个我就不清楚,原本以为64位系统下,int占4个字节,long占8个字节。
实际上64位下,int和long都是占4字节
也就是说long long和long long int等同,因为占的字节数一样,表示的范围也一样,表示如下表
简单实现一遍chromium的base,增长见识
源码 chromium-4.0.210.0_p26329
职业社交网站 领英
关键在于数据类型占多少字节,比如char占1个字节,int占4个字节。
至于int, long,这两个我就不清楚,原本以为64位系统下,int占4个字节,long占8个字节。
实际上64位下,int和long都是占4字节
类型 | 64位系统下所占字节数 |
---|---|
int | 4 |
long | 4 |
long int | 4 |
long long | 8 |
long long int | 8 |
类型 | 同类型 | 64位系统下所占字节数 |
---|---|---|
short | short int | 2 |
int | int | 4 |
long | long int | 4 |
long long | long long int | 8 |
其实stdint.h是这么实现的
/* Exact integral types. */ /* Signed. */ /* There is some amount of overlap with <sys/types.h> as known by inet code */ #ifndef __int8_t_defined # define __int8_t_defined typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE == 64 typedef long int int64_t; # else __extension__ typedef long long int int64_t; # endif #endif
最后贴上我的代码
#ifndef _BASE_BASICTYPES_H_ #define _BASE_BASICTYPES_H_ // // signed // typedef signed char schar; typedef signed char int8; typedef signed short int16; typedef signed int int32; typedef signed long long int64; // // unsigned // typedef unsigned char uchar; typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned int uint32; typedef unsigned long long uint64; #endif // _BASE_BASICTYPES_H_
测试代码
#include "gtest/gtest.h" #include "base/basictypes.h" TEST(basictypes_unittest, size) { EXPECT_EQ(sizeof(schar), 1); EXPECT_EQ(sizeof(int8), 1); EXPECT_EQ(sizeof(int16), 2); EXPECT_EQ(sizeof(int32), 4); EXPECT_EQ(sizeof(int64), 8); EXPECT_EQ(sizeof(uchar), 1); EXPECT_EQ(sizeof(uint8), 1); EXPECT_EQ(sizeof(uint16), 2); EXPECT_EQ(sizeof(uint32), 4); EXPECT_EQ(sizeof(uint64), 8); }
简单实现一遍chromium的base,增长见识
源码 chromium-4.0.210.0_p26329
职业社交网站 领英
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 超过 77% 的桌面计算机运行基于 Chromium 的浏览器
- 微软发布令牌漏洞公告:可绕过 Chromium 沙盒执行任意代码
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例