变量是编程中的基本概念,它是存储信息的容器,这些信息或数据在程序执行过程中可以被修改。每个变量都有指定的类型,决定了变量可以存储什么类型的数据以及对变量可以执行哪些操作。
在 C++ 中声明变量时,你需要指定变量的类型和名称。例如:
int age; // 声明一个整型变量age
double salary; // 声明一个双精度浮点变量salary
char grade; // 声明一个字符型变量grade
声明变量时可以同时初始化它,即在声明时给它赋一个初始值:
int age = 25; // 声明并初始化整型变量age
double salary = 3000.50; // 声明并初始化双精度浮点变量salary
char grade = 'A'; // 声明并初始化字符型变量grade
a-z
,A-Z
)和数字(0-9
),但必须以字母或下划线(_
)开头。数字不能作为变量名的第一个字符。_
),并且可以以下划线开头。但是,以单个下划线开头的变量名在全局命名空间中有特殊含义,通常用于实现的内部或保留使用,因此应避免使用。Variable
、variable
和 VARIABLE
会被视为不同的变量名。int
、return
、class
等)作为变量名。关键字在 C++ 语言中有特殊的意义和用途。C++ 提供了多种数据类型,主要包括:
int
, short
, long
, long long
等。float
, double
, long double
等,用于表示小数。char
,用于表示单个字符。bool
,表示逻辑值 true
或 false
。下面是一个简单的 C++ 代码示例,其中包含了几个不同类型的变量。我将对每行代码进行注释,并在代码示例之后提供一个总体的解释。
#include // 包含输入输出流库
using namespace std; // 使用标准命名空间
int main() {
int age = 30; // 定义一个整型变量age并初始化为30,用于存储年龄
float height = 5.9; // 定义一个浮点型变量height并初始化为5.9,用于存储身高(单位:英尺)
char grade = 'A'; // 定义一个字符型变量grade并初始化为'A',用于存储等级
bool isGraduated = true; // 定义一个布尔型变量isGraduated并初始化为true,表示是否毕业
string name = "John Doe"; // 定义一个字符串变量name并初始化为"John Doe",用于存储名字
// 使用cout进行输出
cout << "Name: " << name << endl; // 输出名字
cout << "Age: " << age << endl; // 输出年龄
cout << "Height: " << height << " feet" << endl; // 输出身高,附带单位
cout << "Grade: " << grade << endl; // 输出等级
cout << "Graduated: " << (isGraduated ? "Yes" : "No") << endl; // 输出是否毕业,使用三元运算符判断
return 0; // 程序正常结束
}
运行结果
这段代码首先包含了 C++ 的标准输入输出流库 iostream
,允许使用 cout
来输出信息到终端(屏幕)。使用 using namespace std;
声明之后,我们可以直接使用 std
命名空间中的所有内容,如 cout
和 endl
,而无需在它们前面加上 std::
前缀。
在 main
函数中,我们定义并初始化了几种不同类型的变量:
int age = 30;
定义了一个整数类型的变量 age
,用于存储年龄,并将其初始化为 30。float height = 5.9;
定义了一个浮点类型的变量 height
,用于存储身高,并将其初始化为 5.9 英尺。char grade = 'A';
定义了一个字符类型的变量 grade
,用于存储等级,并将其初始化为 'A'
。bool isGraduated = true;
定义了一个布尔类型的变量 isGraduated
,用于表示是否毕业,并将其初始化为 true
。string name = "John Doe";
定义了一个字符串类型的变量 name
,用于存储名字,并将其初始化为 "John Doe"
。接下来,使用 cout
和 endl
来输出这些变量的值。cout
是 C++ 中用于标准输出的对象,endl
是一个操纵符,用于在输出后添加换行符。
对于布尔变量 isGraduated
,我们使用了三元运算符 (isGraduated ? "Yes" : "No")
来决定输出 "Yes"
还是 "No"
,这个三元运算符面会详细讲解。
最后,main
函数通过返回 0
正常结束,这是向操作系统表明程序成功执行的传统方式。
常量代表在程序执行过程中其值不可更改的变量。使用常量可以提高程序的可读性和维护性,因为它们允许给经常使用的值赋予易于理解的名字,同时确保这些值不会被意外修改。
在 C++ 中,可以使用 const
关键字来定义常量。声明常量时,必须在声明中初始化它,因为之后无法修改其值。例如:
const int MAX_USERS = 100; // 整型常量
const double PI = 3.14159; // 浮点型常量
这里,MAX_USERS
和 PI
一旦被赋值,它们的值就不能再被改变。
字面量常量是直接在代码中硬编码的常量值。例如,42
、3.14
和 'A'
分别是整型、浮点型和字符型的字面量常量。在 C++11 中,可以使用用户定义的字面量来扩展字面量常量的类型和功能。
整型常量可以是十进制、八进制或十六进制。八进制常量以数字 0
开头,十六进制常量以 0x
或 0X
开头。例如:
const int decVal = 42; // 十进制
const int octVal = 042; // 八进制
const int hexVal = 0x42; // 十六进制
浮点型常量包括小数点或指数部分(或两者兼有),可以表示为单精度(f
或 F
后缀)或双精度(无后缀或 l
或 L
后缀)。例如:
const double pi = 3.14159; // 双精度
const float e = 2.71828f; // 单精度
字符常量是用单引号括起来的单个字符。C++ 中的字符常量实际上是整型值,它们表示对应字符在字符集中的编号。可以使用转义序列来表示特殊字符。例如:
const char newline = '\n'; // 换行符
const char tab = '\t'; // 制表符
constexpr
)C++11 引入了 constexpr
关键字,允许将变量、函数等声明为常量表达式。常量表达式在编译时就被计算,而不是在运行时,这有助于提高程序的性能。例如:
constexpr int getArraySize() {
return 32;
}
int myArray[getArraySize()]; // 使用常量表达式作为数组大小
下面是一个简单的 C++ 程序示例,该程序演示了如何使用常量和变量来计算圆的面积。
#include // 包含头文件iostream,用于输入输出流
// 定义PI为常量,表示圆周率的近似值
const double PI = 3.14159;
int main() {
double radius; // 声明一个双精度浮点型变量radius,用于存储圆的半径
double area; // 声明一个双精度浮点型变量area,用于存储圆的面积
std::cout << "Enter radius: "; // 向标准输出打印提示信息,请求用户输入圆的半径
std::cin >> radius; // 从标准输入读取用户输入的值,并将其赋给变量radius
area = PI * radius * radius; // 计算圆的面积,公式为PI*radius^2
// 向标准输出打印圆的面积,使用 << 运算符将文本和变量值发送到cout
std::cout << "The area of the circle with radius " << radius << " is " << area << std::endl;
return 0; // 程序结束,返回0表示成功
}
运行结果
这个程序首先包含了头文件 iostream
,它是 C++ 标准库中负责输入输出的部分。在程序的开始,我们定义了一个常量 PI
,它代表圆周率的值。这个常量在程序的任何地方都不能被修改。
在 main
函数中,我们声明了两个类型为 double
的变量 radius
和 area
。radius
用于存储用户输入的圆的半径,而 area
用于存储计算出的圆的面积。
接着,程序通过 std::cout
向用户显示提示信息,请求用户输入圆的半径。用户的输入通过 std::cin
读取并存储在变量 radius
中。
使用圆的面积公式 PI * radius * radius
计算面积,并将结果存储在变量 area
中。最后,程序使用 std::cout
输出圆的半径和计算出的面积。
程序以返回值 0
结束,这是一个通用的约定,表示程序成功执行结束。这个简单的示例展示了常量和变量的定义和使用,以及基本的输入输出操作。