[c++]

编程入门 行业动态 更新时间:2024-10-27 14:18:41

[c++]

[c++]

c++基础数据类型

首先来看一张c++基础数据类型的列表

下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。

注意:不同系统会有所差异,一字节为 8 位。

注意:long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这一设定。

详解:菜鸟教程-c++数据类型

总的来说c++的基础数据类型分为三类:

  • 布尔型
  • 整型(char型从本质上说,也是种整型类型,它是长度为1个字节的整数,通常用来存放字符的ASCII码)
  • 浮点型

uint8_t/uint16_t/uint32t/uint64_t是什么

首先要声明一点*_t是typedef定义的表示标志,是一种规范化的表示。
uint8_t/uint16_t/uint32t/uint64_t都不是新的数据类型,而是通过typedef给类型起的别名
这些数据类型都是在C99标准中定义的,具体如下:

/* 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/* Unsigned.  */
typedef unsigned char           uint8_t;
typedef unsigned short int      uint16_t;
#ifndef __uint32_t_defined
typedef unsigned int            uint32_t;
# define __uint32_t_defined
#endif
#if __WORDSIZE == 64
typedef unsigned long int       uint64_t;
#else
__extension__
typedef unsigned long long int  uint64_t;
#endif

需要注意的是:uint8_t 实际是一个 char。(typedef unsigned char uint8_t;),存储的是ascii码。

  • 输出uint8_t 类型的变量实际输出的是其对应的字符, 而不是真实数字
#include <iostream>
#include <cstdint>using namespace std;int main() {uint8_t a = 65;cout << a << endl;
}
out:A
  • uint8_t类型变量转化为字符串时得到的会是ASCII码对应的字符, 字符串转化为 uint8_t 变量时, 会将字符串的第一个字符赋值给变量。
#include <iostream>
#include <cstdint>
#include <sstream>using namespace std;int main() {uint8_t a = 65;// uint8_t -> stringstring str;ostringstream oss;oss << a;str = oss.str();cout << str << endl;// string -> uint8_tstr = "65";stringstream ss;ss >> a;ss.clear();cout << a << endl;uint32_t b = 66;// uint32_t -> stringstring str2;ostringstream oss2;oss2 << b;str = oss2.str();cout << str2 << endl;// string -> uint32_tstr = "66";stringstream ss2;ss2 << str;ss2 >> b;ss2.clear();cout << b << endl;
}
out:
A66666

更多推荐

[c++]

本文发布于:2023-06-15 01:26:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/717654.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!