上一章中显示的“Hello World”程序的有用性相当值得怀疑。我们必须编写几行代码,编译它们,然后执行生成的程序,只是为了获得写在屏幕上的简单句子的结果。自己输入输出句子肯定会快得多。
但是,编程不仅限于在屏幕上打印简单的文本。为了走得更远,并且能够编写执行有用任务的程序,从而真正节省我们的工作,我们需要引入变量的概念。
1.什么是变量
例:
a = 5;
b = 2;
a = a + 1;
result = a - b;
假设我要求你记住数字5,然后我要求你同时记住数字2。您刚刚在内存中存储了两个不同的值(5 和 2)。现在,如果我要求你在我说的第一个数字上加1,你应该在你的记忆中保留数字6(即5 + 1)和2。然后,例如,我们可以减去这些值并得到 4 作为结果。
我们现在可以将变量定义为内存的一部分来存储值。
2.标识符
含义: 由若干个字符构成的具有一定意义的最小单词单元, 通常用来定义函数名、类名、对象名、变量名、常量名等。
注意:
(1)标识符区分大小写: Name、name 是两个不同的标识符
(2)标识符的长度是不受限制的 , 但是在某些系统上不能超过32字符
(3)不得使用关键字充当标识符
3.基本数据类型
基本数据类型是由语言直接实现的基本类型,这些语言表示大多数系统本机支持的基本存储单元。它们主要可分为:
- 字符类型:它们可以表示单个字符,例如 或 。最基本的类型是 ,它是一个单字节字符。还为更宽的字符提供了其他类型。
'A'
'$'
char
- 数字整数类型:它们可以存储整数值,例如 或 。它们以各种大小存在,可以是有符号的,也可以是无符号的,具体取决于它们是否支持负值。
7
1024
- 浮点类型:它们可以表示具有不同精度级别的实值,例如 或 ,具体取决于使用三种浮点类型中的哪一种。
3.14
0.01
- 布尔类型:布尔类型(在C++中称为 )只能表示两种状态之一,或 。
bool
true
false
以下是C++中基本类型的完整列表:
群 | 类型名称* | 尺寸/精度注意事项 |
---|---|---|
字符类型 | char | 大小正好是一个字节。至少 8 位。 |
char16_t | 不小于 。至少 16 位。char | |
char32_t | 不小于 。至少 32 位。char16_t | |
wchar_t | 可以表示支持的最大字符集。 | |
整数类型(有符号) | signed char | 与 大小相同。至少 8 位。char |
signed short int | 不小于 。至少 16 位。char | |
signed int | 不小于 。至少 16 位。short | |
signed long int | 不小于 。至少 32 位。int | |
signed long long int | 不小于 。至少 64 位。long | |
整数类型(无符号) | unsigned char | (与签名对应项的大小相同) |
unsigned short int | ||
unsigned int | ||
unsigned long int | ||
unsigned long long int | ||
浮点类型 | float | |
double | 精度不低于float | |
long double | 精度不低于double | |
布尔类型 | bool | |
空隙类型 | void | 无存储 |
空指针 | decltype(nullptr) |
大小 | 唯一的可表示值 | 笔记 |
---|---|---|
8 位 | 256 | = 28 |
16 位 | 65 536 | = 216 |
32 位 | 4 294 967 296 | = 232 (~4亿) |
64 位 | 18 446 744 073 709 551 616 | = 264 (~18亿 |
对于整数类型,具有更多可表示值意味着它们可以表示的值范围更大;例如,16 位无符号整数能够表示 65536 到 0 范围内的 65535 个不同值,而其有符号整数在大多数情况下能够表示 -32768 和 32767 之间的值。请注意,与无符号类型相比,有符号类型中的正值范围大约减半,因为 16 位中的一个用于符号;这是范围上相对较小的差异,并且很少纯粹根据无符号类型的正值范围来证明使用无符号类型的合理性。
4.变量声明
C++ 是一种强类型语言,要求每个变量在首次使用之前都使用其类型进行声明。这会通知编译器在内存中为变量保留的大小以及如何解释其值。在C++中声明新变量的语法很简单:我们只需编写类型后跟变量名称(即其标识符)。例如:
int a;
float mynumber;
这是两个有效的变量声明。第一个声明一个带有标识符的类型变量。第二个声明一个带有标识符的类型变量。一旦声明,变量就可以在程序中的其余范围内使用。
如果声明多个相同类型的变量,则可以通过用逗号分隔它们的标识符在单个语句中声明它们。例如:
int a, b, c;
这声明了三个变量 (, 和 ),它们都是类型 ,并且具有完全相同的含义
int a;
int b;
int c;
实例了解变量声明在程序中的实际效果:
// operating with variables
#include <iostream>
using namespace std;
int main ()
{
// declaring variables:
int a, b;
int result;
// process:
a = 5;
b = 2;
a = a + 1;
result = a - b;
// print out the result:
cout << result;
// terminate the program:
return 0;
}
5.变量初始化
声明上面示例中的变量时,它们具有不确定的值,直到第一次为它们赋值。但是,变量从声明的那一刻起就可能具有特定的值。这称为变量的初始化。
在C++中,有三种方法可以初始化变量。它们都是等价的,让人想起语言多年来的发展: 第一个称为类 c 初始化(因为它继承自 C 语言),包括附加一个等号,后跟变量初始化的值:
例如,要声明一个 call 类型的变量,并从声明的同一时刻将其初始化为零值, 我们可以写:
int x = 0;
第二种方法称为构造函数初始化(由C++语言引入),将初始值括在括号 ():
int x (0);
最后,第三种方法,称为统一初始化,与上述类似,但使用大括号()而不是括号(这是由2011年C++标准的修订引入的):
int x {0};
初始化变量的所有三种方法在C++中都是有效且等效的。
// initialization of variables
#include <iostream>
using namespace std;
int main ()
{
int a=5; // initial value: 5
int b(3); // initial value: 3
int c{2}; // initial value: 2
int result; // initial value undetermined
a = a + b;
result = a - c;
cout << result;
return 0;
}
6.字符串简介
基本类型表示可能运行代码的计算机处理的最基本类型。但C++语言的主要优势之一是其丰富的复合类型集,其中基本类型只是构建块。
复合类型的一个示例是类。这种类型的变量能够存储字符序列,例如单词或句子。一个非常有用的功能!
与基本数据类型的第一个区别是,为了声明和使用这种类型的对象(变量),程序需要包含标准库中定义类型的标头(标头):string
<string>
// my first string
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string mystring;
mystring = "This is a string";
cout << mystring;
return 0;
}
如前面的示例所示,可以使用任何有效的字符串文本初始化字符串,就像数值类型变量可以初始化为任何有效的数值文字一样。与基本类型一样,所有初始化格式都对字符串有效:
string mystring = "This is a string";
string mystring ("This is a string");
string mystring {"This is a string"};
字符串还可以执行基本数据类型可以执行的所有其他基本操作,例如在没有初始值的情况下声明并在执行期间更改其值:
// my first string
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string mystring;
mystring = "This is the initial string content";
cout << mystring << endl;
mystring = "This is a different string content";
cout << mystring << endl;
return 0;
}
注意:插入机械手结束了 line(打印换行符并刷新流)。
该类是复合类型。正如您在上面的示例中所看到的,复合类型的使用方式与基本类型相同:使用相同的语法来声明变量并初始化它们。
@Neng