C++官方参考链接:Variables and types - C++ Tutorials (cplusplus.com)
变量和类型
在前一章中展示的"Hello World"程序的有用性是相当值得怀疑的。我们必须编写几行代码,编译它们,然后执行生成的程序,只是为了获得写在屏幕上的一个简单句子的结果。如果我们自己输入输出句子,肯定会快得多。
然而,编程并不仅仅局限于在屏幕上打印简单的文本。为了更进一步,为了能够编写执行有用任务的程序来节省我们的工作,我们需要引入变量的概念。
让我们想象一下,我让你记住数字5,然后我让你同时记住数字2。你刚刚在你的记忆中存储了两个不同的值(5和2)。现在,如果我让你在我说的第一个数字上加1,你应该在你的记忆中保留数字6(即5+1)和2。然后我们可以,例如,减去这些值,得到4。
上面描述的整个过程是计算机可以用两个变量完成的一个明喻。同样的过程可以用以下语句在C++中表示:
a = 5;
b = 2;
a = a + 1;
result = a - b;
显然,这是一个非常简单的示例,因为我们只使用了两个小整数值,但是考虑到您的计算机可以同时存储数百万个这样的数字,并使用它们进行复杂的数学运算。
现在可以将变量定义为存储值的内存的一部分。
每个变量都需要一个名称来标识它,并将其与其他变量区别开来。例如,在前面的代码中,变量名是a、b和result,但是只要变量是有效的C++标识符,我们就可以用我们能想到的任何名称来调用它们。
标识符
一个有效的标识符是一个或多个字母,数字或下划线字符(_)的序列。空格,标点符号和符号不能成为标识符的一部分。此外,标识符应该总是以字母开头。它们也可以以下划线字符(_)开始,但是在大多数情况下,这样的标识符被认为是保留给编译器特定的关键字或外部标识符,以及在任何地方包含两个连续下划线字符的标识符。在任何情况下都不能以数字开头。
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
特定的编译器也可能有其他特定的保留关键字。
非常重要:C++语言是一种“区分大小写”的语言。这意味着用大写字母书写的标识符不等于用小写字母书写的同名标识符。因此,例如,RESULT变量与result变量或Result变量不同。这是三个不同的标识符,分别标识三个不同的变量。
基本数据类型
变量的值以0s和1s的形式存储在计算机内存中未指定的位置。我们的程序不需要知道变量存储的确切位置;它可以简单地通过它的名称来引用它。程序需要知道的是变量中存储的数据类型。存储一个简单的整数与存储一个字母或一个大的浮点数是不一样的;尽管它们都是用0s和1s表示的,但它们的解释方式并不相同