|
|
a
、b
和 result
,但我们本可以给这些变量起任何我们能想到的名字,只要它们是有效的C++标识符。_
)组成的序列。空格、标点符号和符号不能成为标识符的一部分。此外,标识符必须总是以字母开头。它们也可以以下划线字符(_
)开头,但在大多数情况下,这类标识符被认为是为编译器特定的关键字或外部标识符保留的,以及任何位置包含两个连续下划线字符的标识符。在任何情况下,它们都不能以数字开头。alignas, alignof, and, and_eq, asm, auto, bitand, bitor, bool, break, case, catch, char, char16_t, char32_t, class, compl, const, constexpr, const_cast, continue, decltype, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, noexcept, not, not_eq, nullptr, operator, or, or_eq, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_assert, static_cast, struct, switch, template, this, thread_local, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while, xor, xor_eq
RESULT
与变量 result
或变量 Result
是不一样的。这是三个标识了三个不同变量的不同标识符。'A'
或 '$'
。最基本的类型是 char
,它是一个单字节的字符。还提供了用于更宽字符的其他类型。7
或 1024
。它们有多种大小,并且可以是有符号(signed)或无符号(unsigned),这取决于它们是否支持负值。3.14
或 0.01
,具有不同级别的精度,具体取决于使用三种浮点类型中的哪一种。bool
,只能表示两种状态之一:true
或 false
。分组 | 类型名称* | 关于大小/精度的说明 |
---|---|---|
字符类型 | char | 大小恰好为一个字节。至少8位。 |
char16_t | 不小于 char 。至少16位。 | |
char32_t | 不小于 char16_t 。至少32位。 | |
wchar_t | 可以表示支持的最大字符集。 | |
整数类型(有符号) | signed char | 与 char 大小相同。至少8位。 |
signed short int | 不小于 char 。至少16位。 | |
signed int | 不小于 short 。至少16位。 | |
signed long int | 不小于 int 。至少32位。 | |
signed long long int | 不小于 long 。至少64位。 | |
整数类型(无符号) | unsigned char | (与它们的有符号对应类型大小相同) |
unsigned short int | ||
unsigned int | ||
unsigned long int | ||
unsigned long long int | ||
浮点类型 | float | |
double | 精度不低于 float | |
long double | 精度不低于 double | |
布尔类型 | bool | |
Void 类型 | void | 无存储空间 |
空指针 | decltype(nullptr) |
signed
和 int
部分进行缩写——只有非斜体部分是必需的,斜体部分是可选的。例如,signed short int
可以缩写为 signed short
、short int
或干脆 short
;它们都表示相同的基本类型。char
(其大小恰好为一个字节)外,没有任何基本类型指定了标准大小(最多只有一个最小大小)。因此,该类型不被要求(并且在许多情况下不)恰好是这个最小大小。这并不意味着这些类型的大小不确定,而是意味着在所有编译器和机器上没有一个标准大小;每个编译器实现可以为这些类型指定最适合程序将要运行的架构的大小。这种对类型相当通用的尺寸规定为C++语言提供了很大的灵活性,使其能够适应在各种平台(无论是现在还是未来)上以最佳方式工作。大小 | 可表示的唯一值数量 | 备注 |
---|---|---|
8位 | 256 | = 28 |
16位 | 65 536 | = 216 |
32位 | 4 294 967 296 | = 232 (约40亿) |
64位 | 18 446 744 073 709 551 616 | = 264 (约1800亿亿) |
char
、int
和 double
来分别表示字符、整数和浮点值。它们各自组中的其他类型仅在非常特殊的情况下使用。<limits>
)。如果出于某种原因需要特定大小的类型,库在头文件 <cstdint>
中定义了一些固定大小的类型别名。void
,它表示类型的缺失;以及类型 nullptr
,它是一种特殊的指针类型。这两种类型都将在后面关于指针的章节中进一步讨论。
|
|
int
、标识符为 a
的变量。第二个声明了一个类型为 float
、标识符为 mynumber
的变量。一旦声明,变量 a
和 mynumber
就可以在程序中它们作用域的其余部分使用。
|
|
a
、b
和 c
),它们都是 int
类型,并且与以下写法的含义完全相同:
|
|
|
|
4 |
类型 标识符 = 初始值;
x
的 int
类型变量,并在声明的同时将其初始化为零,我们可以这样写:
|
|
()
)中:类型 标识符 (初始值);
|
|
{}
)代替圆括号(这是由2011年C++标准修订版引入的):类型 标识符 {初始值};
|
|
|
|
6 |
auto
作为变量的类型说明符:
|
|
bar
被声明为 auto
类型;因此,bar
的类型就是用来初始化它的值的类型:在这种情况下,它使用 foo
的类型,即 int
。decltype
说明符进行类型推导:
|
|
bar
被声明为与 foo
具有相同的类型。auto
和 decltype
是最近添加到语言中的强大功能。但它们引入的类型推导功能旨在用于无法通过其他方式获取类型,或使用它能提高代码可读性的情况。上面的两个例子可能都不属于这两种用例。事实上,它们很可能降低了可读性,因为在阅读代码时,必须去查找 foo
的类型才能真正知道 bar
的类型。string
类就是一个复合类型的例子。这种类型的变量能够存储字符序列,例如单词或句子。这是一个非常有用的功能!<string>
):
|
|
This is a string |
|
|
|
|
This is the initial string content This is a different string content |
endl
操作符会结束行(ends the line),即打印一个换行符并刷新流。![]() 程序结构 | ![]() 目录 | ![]() 常量 |