C++ 变量类型
变量提供了我们的程序可以操作的带有名称的存储。 C++ 中的每个变量都有一个特定的类型,该类型确定变量内存的大小和布局;可以存储在该内存中的值的范围;以及可以对该变量应用的操作集。
变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。因为C++是大小写敏感的,所以大写和小写字母是不同的 –
如上一章所述,C++ 中有以下基本变量类型 –
编号 | 类型和描述 |
---|---|
1 | 布尔型 存储真或假的值。 |
2 | 字符型 通常是一个字节长。这是一种整型。 |
3 | 整型 机器上最自然的整数大小。 |
4 | 单精度浮点型 单精度浮点数值。 |
5 | 双精度浮点型 双精度浮点数值。 |
6 | 空类型 表示没有类型。 |
7 | 宽字符型 宽字符类型。 |
C++还允许我们定义各种其他类型的变量,我们将在后续章节中介绍,如 枚举、指针、数组、引用、数据结构, 以及 类 。
以下部分将介绍如何定义、声明和使用各种类型的变量。
C++中的变量定义
变量定义告诉编译器在哪里以及为变量创建多少存储空间。变量定义指定了数据类型,并包含一个或多个该类型的变量列表,如下所示 –
type variable_list;
在这里, 类型 必须是有效的C++数据类型,包括char,w_char,int,float,double,bool或任何自定义对象等,而 变量列表 可以由一个或多个用逗号分隔的标识符名称组成。以下是一些有效的声明示例−
int i, j, k;
char c, ch;
float f, salary;
double d;
该行 int i, j, k; 既声明又定义了变量i、j和k。这指示编译器创建名为i、j和k的int类型变量。
变量可以在声明时进行初始化(赋予初始值)。初始化器由等号后跟常量表达式组成,如下所示−
type variable_name = value;
有一些示例,包括−
extern int d = 3, f = 5; // declaration of d and f.
int d = 3, f = 5; // definition and initializing d and f.
byte z = 22; // definition and initializes z.
char x = 'x'; // the variable x has the value 'x'.
对于没有初始化器的定义:具有静态存储期的变量隐式初始化为NULL(所有字节的值为0);所有其他变量的初始值未定义。
C++中的变量声明
变量声明向编译器提供确保存在一个给定类型和名称的变量,使得编译器可以继续进行进一步的编译而不需要关于变量的完整细节。变量声明只在编译时具有意义,编译器在程序链接时需要实际的变量定义。
变量声明在使用多个文件并且将变量定义在其中一个文件中时非常有用,该变量在程序链接时将可用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在C++程序中多次声明一个变量,但它只能在一个文件、一个函数或一个代码块中定义一次。
示例
请尝试以下示例,其中一个变量在顶部进行了声明,但在main函数内进行了定义-
#include <iostream>
using namespace std;
// Variable declaration:
extern int a, b;
extern int c;
extern float f;
int main () {
// Variable definition:
int a, b;
int c;
float f;
// actual initialization
a = 10;
b = 20;
c = a + b;
cout << c << endl ;
f = 70.0/3.0;
cout << f << endl ;
return 0;
}
当上述代码被编译并执行时,会产生以下结果−
30
23.3333
相同的概念也适用于函数声明,您可以在声明函数时提供函数名称,而其实际定义可以在任何其他地方给出。例如:
// function declaration
int func();
int main() {
// function call
int i = func();
}
// function definition
int func() {
return 0;
}
左值和右值
在C++中有两种表达式 –
- 左值 - 引用内存位置的表达式称为”左值”表达式。左值可以出现在赋值语句的左边或右边。
-
右值 - 右值表示存储在内存中的数据值。右值是一个不可赋值的表达式,这意味着右值可以出现在赋值语句的右边,但不能出现在左边。
变量是左值,因此可以出现在赋值语句的左边。数字文字是右值,因此不能被赋值,也不能出现在左边。以下是一个有效的语句 –
int g = 20;
以下是一个无效的语句,会产生编译时错误 −
10 = 20;