
在C++编程中,变量和基本类型是编程的基础。了解如何声明和使用变量,以及掌握C++中的基本数据类型,是编写有效C++程序的第一步。
C++提供了多种基本数据类型,用于存储不同类型的数据。
int:标准整型,通常占用4个字节(32位系统)。short:短整型,通常占用2个字节。long:长整型,通常占用4或8个字节(取决于系统)。long long:更长的整型,通常占用8个字节。整型变量可以存储正数、负数和零。
float:单精度浮点型,通常占用4个字节。double:双精度浮点型,通常占用8个字节。long double:扩展精度浮点型,占用字节数依赖于实现(通常是12或16个字节)。浮点型变量可以存储小数和科学计数法表示的数。
char:字符型,通常占用1个字节。wchar_t:宽字符,通常2字节,处理Unicode字符。字符型变量可以存储单个字符,包括字母、数字和特殊字符。字符常量用单引号括起来,如'A'。
bool:布尔型,用于存储逻辑值true或false。布尔型变量通常用于条件判断和控制结构。
以下是一个简单的C++程序,展示如何声明和使用变量和基本类型:
#include <iostream>
int main() {
int age = 25;
double salary = 5000.0;
char letter = 'A';
bool isPassed = true;
std::cout << "Age: " << age << std::endl;
std::cout << "Salary: " << salary << std::endl;
std::cout << "Letter: " << letter << std::endl;
std::cout << "Is Passed: " << std::boolalpha << isPassed << std::endl;
return 0;
}
声明了四个变量,分别属于整型、浮点型、字符型和布尔型,并使用std::cout输出它们的值。
在C++中,变量必须先声明后使用。声明变量的基本语法是:
dataType variableName;dataType:变量的数据类型,决定了变量可以存储的数据的类型和范围。variableName:变量的名称,用于在程序中引用变量。例如:
int age;
double salary;
char letter;
bool isPassed;这里,age是一个整型变量,salary是一个双精度浮点型变量,letter是一个字符型变量,isPassed是一个布尔型变量。
变量可以在声明时进行初始化,也可以在声明后进行赋值。
int age = 25;
double salary = 5000.0;
char letter = 'A';
bool isPassed = true;
// 或者声明后赋值
age = 30;
salary = 6000.0;
letter = 'B';
isPassed = false;变量类型 | 默认值 |
|---|---|
全局变量 | 零初始化 |
局部内置类型 | 未定义(随机值) |
类类型 | 调用默认构造函数 |
int global = 100; // 全局作用域
int main() {
int local = 50; // 块作用域
{
int inner = 30; // 嵌套块作用域
}
}变量类型 | 生命周期 | 存储位置 |
|---|---|---|
局部变量 | 块执行期间 | 栈内存 |
全局变量 | 程序运行全程 | 数据段 |
static局部变量 | 首次定义到程序结束 | 数据段 |
int val = 42;
int &refVal = val; // 必须初始化
refVal = 100; // 修改原变量值引用特性:
double &d = i;非法)
int *p = nullptr; // 现代C++推荐初始化方式
int num = 10;
p = # // 取地址
*p = 20; // 解引用
// 指针运算
int arr[5] = {0};
int *ptr = arr;
ptr++; // 移动sizeof(int)字节指针操作规范:
if(p != nullptr) { ... }
unique_ptr/shared_ptr)
int *p; *p = 5;(危险!)
const int MAX_SIZE = 100; // 必须初始化
const int *p = &MAX_SIZE; // 指向常量的指针
int *const cp = &var; // 常量指针
constexpr int N = 20; // 编译期常量(C++11)int i = 0;
const int ci = 42; // 顶层const
const int *p2 = &ci; // 底层const
const int *const p3 = p2; // 右const是顶层,左const是底层typedef double wages; // wages是double的别名
typedef wages base, *p; // base是double, p是double*using SI = Sales_item; // 更直观的语法
using Ptr = int*; // 指针类型别名auto i = 42; // int
auto d = 3.14; // double
auto p = &i; // int*
auto &r = d; // double&
// 复合类型推导
const auto *cp = &i; // const int*
auto ptr = new auto(10); // int*auto使用规范:
auto x = GetComplexObject(); 可能隐藏类型信息
auto y;(错误!)
decltype(f()) sum = x;
count、list)
unsigned u = 10;
int i = -42;
cout << i + i << endl; // -84
cout << u + i << endl; // 4294967264(32位系统)auto x = 3.14f; // float
auto y = 100ULL; // unsigned long longint a = 5;
double b = static_cast<double>(a); // C++风格转换