小古银的官方网站(完整教程):http://www.xiaoguyin.com/
C++入门教程视频:https://www.bilibili.com/vide...ide
通过前面的学习和练习,相信你已经更加了解计算机和C++的关系。本部分教程将详细讲解基本数据类型、一些经常使用的数据类型的使用和再详细讲解循环语句等基础内容。学习
本部分教程的目的:优化
在学习以前,再解释几个名词:网站
类是能够自定义的数据类型的统称,C++标准库中有不少类,而咱们也能够经过类来制定出方便本身使用的数据类型。后续教程中若是出现类的话,我将会明确指出它是类。ui
至于如何制定出一个类,这个将在后续教程中讲解。指针
用类声明定义出来的变量叫作对象。code
用类声明定义出对象的这个行为也叫作实例化,也能够叫作建立对象,不过本教程多数也是用声明这个词。视频
像int
等,在C++语言中有特定做用的单词。关键字是不能用做变量名称等的标识符。对象
编译的时候。教程
程序运行的时候。一些能够在编译的时候得出结果的代码,编译器通常都会尽可能在编译的时候优化掉,这样编译出来的程序因为执行的代码更少,因此运行的时候会更快。
咱们知道在使用变量前须要用数据类型声明出变量才能使用,前面已经讲解过很是经常使用的基本数据类型,如今将详细讲解基本数据类型和经常使用的其余数据类型。
在声明定义变量时,必须指定数据类型,来讲明变量保存的类型和变量占用多大的内存。
基本数据类型属于C++的核心语言,其余的数据类型都是根据这些衍生出来的。如下是基本数据类型(占用内存和取值范围是基于VS2017和GCC7.3的,感谢FirstLove指出问题):
类型 | 类型简写 | 用途 | 占用内存(字节数) | 取值范围 |
---|---|---|---|---|
bool | bool | 只有两个值(例如性别) | 1 | false, true |
unsigned char | unsigned char | 保存字节数据 | 1 | [0, 255] |
signed char | char | 保存窄字符或UTF-8字符 | 1 | [-128, 127] |
wchar_t | wchar_t | 保存宽字符字符 | 2(Windows)或 4(Linux/OS X) | [-32768, 32767](Windows)或[-2147483648, 2147483647](Linux/OS X) |
char16_t | char16_t | 保存UCS-2字符 | 2 | [0, 65535] |
char32_t | char32_t | 保存UCS-4字符 | 4 | [0, 4294967295] |
signed int | int | 保存整数 | 2(16位系统)或 4(32位系统) | [-32768, 32767](16位系统)或[-2147483648, 2147483647](32位系统) |
unsigned int | unsigned int | 保存非负整数 | 2(16位系统)或 4(32位系统) | [0, 65535](16位系统)或[0, 4294967295](32位系统) |
signed short int | short | 保存整数 | 2 | [-32768, 32767] |
unsigned short int | unsigned short | 保存非负整数 | 2 | [0, 65535] |
signed long int | long | 保存整数 | 4(GCC32位/VS)或 8(GCC64位) | [-2147483648, 2147483647](GCC32位/VS)或 [-9223372036854775808, 9223372036854775807](GCC64位) |
unsigned long int | unsigned long | 保存非负整数 | 4(GCC32位/VS)或 8(GCC64位) | [0, 4294967295](GCC32位/VS)或 [0, 18446744073709551615](GCC64位) |
signed long long int | long long | 保存整数 | 8 | [-9223372036854775808, 9223372036854775807] |
unsigned long long int | unsigned long long | 保存非负整数 | 8 | [0, 18446744073709551615] |
float | float | 保存小数 | 4 | 6位左右的有效数字 |
double | double | 保存小数 | 8 | 16位左右的有效数字 |
long double | long double | 保存小数 | 8(VS)或 12(GCC32位)或 16(GCC64位) | 这个状况太多就不考证了,转载请注明出处“小古银的C++教程” |
指针 | 指针 | 保存内存地址 | 2(16位系统)或 4(32位系统)或 8(64位系统) | [0x0000, 0xFFFF](16位系统)或 [0x00000000, 0xFFFFFFFF](32位系统)或 [0x0000000000000000, 0xFFFFFFFFFFFFFFFF](64位系统) |
其中,指针是用来保存地址的特殊数据类型。虽然指针不是基本数据类型,但也是很经常使用的类型,因此也放到这部分一块儿讲解。
unsigned long long
更大的基本数据类型,因此若是你要保存的数字大于unsigned long long
能够保存的最大值,你须要另外想办法解决。其余经常使用的数据类型:
std::string
、std::wstring
、std::u16string
、std::u32string
用于保存字符串,这些类型在string
库中。std::size_t
用于保存长度,这个类型在cstddef
库中。0
默认是int
类型。可是有很多的时候,若是咱们想这个0
是unsigned int
类型。那么,这种状况就可使用类型后缀,说明这个字面量是指定类型的。例如:unsigned int zero = 0u;
、unsigned long long two = 2ull;
。
类型后缀有如下这些:
类型 | 后缀 |
---|---|
bool | 无后缀 |
unsigned char | 无后缀 |
char/wchar_t/char16_t/char32_t | 无后缀 |
int | 无后缀 |
short | 无后缀 |
long | l 或 L |
unsigned int | u 或 U |
unsigned short | 无后缀 |
unsigned long | ul 或 UL |
long long | ll 或 LL |
unsigned long long | ull 或 ULL |
float | f 或 F |
double | 无后缀 |
long double | l 或 L |
若是须要固定数据占用大小,则须要使用如下数据类型,这些数据类型都在cstdint
库中:
int8_t
和uint8_t
。int16_t
和uint16_t
。int32_t
和uint32_t
。int64_t
和uint64_t
。注意:只有当编译器支持这些类型的时候,这些类型才会被定义;当你使用了这些类型可是编译器不支持,编译的时候将会报错。
char16_t
、char32_t
、unsigned long long
、long long
是C++11增长的。ull
/ULL
是C++11增长的。