总结看下表
| bool | 布尔 (0 or 1) | 大小 | 范围 | 精确性 |
|---|---|---|---|---|
| char | 字符 | 1 byte | -128 to +127 or; 0 to 255 | |
| wchar_t | 字符 | 2 bytes | -32768 to +32767 | |
| short | 整型 | 2 bytes | -32768 to +32767 | |
| int | 整型 | 2 bytes / 4 bytes | -2147483648 to +2147483647 | |
| long | 整型 | 4 bytes | -2147483648 to +2147483647 | |
| float | 浮点数 | 4 bytes | –3.4E+38 | 6 digits |
| double | 浮点数 | 8 bytes | –1.7E+308 | 15 digits |
| long double | 浮点数 | 10 bytes | –1.7E+308 | 19 digits |
布尔型 Bool
通常用来表示逻辑关系,对或错,真或假。然后用在AND和OR的逻辑关系里
字符型 The char and wchar_t Types
- 代表的是字符
- 这个数据结构其实是个数字,这个数字会对应ASCII码
- ASCII码里有32个控制字符(codes 0 – 31)和96个可打印字符(codes 32 – 127) 总共7个bit
char的长度是8 bit (2^8 = 255),除了ASCII码还存了另外128个常见字符char_w的长度是16 bit (2^16 = 65536),除了char以外还存了35000个unitcode字符
signed 和 unsigned
- 所有的整形包括char在内,在没有加keyword的情况下都会被当作signed。
- 在signed的情况下,符号会出存在MSB里
小知识💡
- MSB(全大写)有时也指the Most Significant Byte,指多字节序列中具有最大权重的字节。
- LSB(全大写)有时也指Least Significant Byte,指多字节序列中最小权重的字节
范围常数
每一种数据类型的范围值都被存在这个header里。比如说 CHAR_MIN, CHAR_MAX, INT_MIN, 和 INT_MAX,表示char的最小值/最大值和int的最小值/最大值
#include <iostream>
#include <climits> // Definition of INT_MIN, ...
using namespace std;
int main() {
cout << "Range of types int and unsigned int" << endl << endl;
cout << "Type Minimum Maximum" << endl
<< "--------------------------------------------" << endl;
cout << "int " << INT_MIN << " " << INT_MAX << endl;
cout << "unsigned int " << " 0 " << UINT_MAX << endl;
return 0;
}
浮点型
每种浮点型最大的差别就是精确度。用的时候根据自己的精确度需要选择适合的数据类型。通常我感觉都是double,这个时代很少见到有人用float了,毕竟我们好像并不是那么缺内存。当然,我说的是一般的程序,如果是硬件编程,或者是在比较小的设备上,考量可能会不一样。
sizeof 运算
如果你有个variable,你可以用sizeof(variable_name)来看这个variable的大小

被折叠的 条评论
为什么被折叠?



