当前位置: 首页 > news >正文

C++ 第一阶段 基本语法 - 第一节:变量与数据类型详解

目录

一、变量与数据类型概述

1.1 什么是变量?

1.2 数据类型分类

二、基本数据类型详解

2.1 整型(int, short, long)

2.1.1 常见整型类型

2.1.2 代码示例

2.1.3 注意事项

2.2 浮点型(float, double)

2.2.1 浮点型特点

2.2.2 代码示例

2.2.3 精度问题

2.3 字符型(char)

2.3.1 字符型特性

2.3.2 代码示例

2.3.3 常见转义字符

2.4 布尔型(bool)

2.4.1 布尔型特点

2.4.2 代码示例

三、枚举类型(enum)

3.1 基本枚举定义

3.2 C++11 强类型枚举

四、变量命名规则与最佳实践

4.1 命名规则

4.2 命名风格

4.3 初始化建议

五、总结


一、变量与数据类型概述

1.1 什么是变量?

变量是程序中用于存储数据的容器,每个变量需要指定一个数据类型,以决定:

  • 存储空间大小(内存占用)
  • 数据的取值范围
  • 可执行的操作类型

1.2 数据类型分类

C++ 是静态类型语言,变量类型在声明时确定。基础数据类型包括:

  • 整型(int, short, long)
  • 浮点型(float, double)
  • 字符型(char)
  • 布尔型(bool)
  • 枚举型(enum)

二、基本数据类型详解

2.1 整型(int, short, long)

2.1.1 常见整型类型
类型占用字节范围(32位系统)
short2-32768 ~ 32767
int4-2147483648 ~ 2147483647
long4同 int
long long8±9.2e18
2.1.2 代码示例
#include <iostream>
using namespace std;int main() {int age = 25;             // 声明int变量short temperature = -5;   // 声明short变量long population = 7800000000L; // long变量需加后缀Lcout << "Age: " << age << endl;cout << "Temperature: " << temperature << endl;cout << "Population: " << population << endl;return 0;
}

输出

Age: 25
Temperature: -5
Population: 7800000000
2.1.3 注意事项
  • 32位系统下 int 通常为 4 字节,64位系统可能不同
  • 使用 LLONG_MAX 等常量查看最大值(需包含 <climits> 头文件)

2.2 浮点型(float, double)

2.2.1 浮点型特点
类型占用字节精度表示范围
float46-7 位有效数字3.4e-38 ~ 3.4e+38
double815-16 位有效数字1.7e-308 ~ 1.7e+308
2.2.2 代码示例
#include <iostream>
using namespace std;int main() {float pi = 3.14159f;      // float变量需加后缀fdouble gravity = 9.81;    // double默认类型double scientific = 6.022e23; // 科学计数法cout << "Pi: " << pi << endl;cout << "Gravity: " << gravity << endl;cout << "Scientific: " << scientific << endl;return 0;
}

输出

Pi: 3.14159
Gravity: 9.81
Scientific: 6.022e+23
2.2.3 精度问题
float a = 0.1f;
float b = 0.2f;
if (a + b == 0.3f) { // 实际不会成立!cout << "Equal";
} else {cout << "Not equal"; // 输出此行
}

原因:浮点数在计算机中是以二进制存储的,某些十进制小数无法精确表示。


2.3 字符型(char)

2.3.1 字符型特性
  • 占用 1 字节(8 bit)
  • 实际存储的是 ASCII 码值(0~127)
  • 可直接操作字符或其对应的整数值
2.3.2 代码示例
#include <iostream>
using namespace std;int main() {char grade = 'A';         // 字符常量char newline = '\n';      // 转义字符char ascii_value = 65;    // 直接使用ASCII码cout << "Grade: " << grade << endl;cout << "ASCII 65: " << ascii_value << endl;cout << "Newline: " << newline << "END" << endl;return 0;
}

输出

Grade: A
ASCII 65: A
Newline: 
END
2.3.3 常见转义字符
转义字符含义
\n换行
\t制表符
\\反斜杠
\"双引号
\'单引号

2.4 布尔型(bool)

2.4.1 布尔型特点
  • 占用 1 字节
  • 取值仅能是 true 或 false
  • 在条件判断中自动转换:
    • 非零值 → true
    • 零值 → false
2.4.2 代码示例
#include <iostream>
using namespace std;int main() {bool is_raining = true;bool has_error = 0; // 0 → falseif (is_raining) {cout << "Bring an umbrella!" << endl;}if (!has_error) {cout << "No error detected." << endl;}return 0;
}

输出

Bring an umbrella!
No error detected.

三、枚举类型(enum)

3.1 基本枚举定义

#include <iostream>
using namespace std;int main() {enum Color { RED, GREEN, BLUE }; // 自动从0开始编号Color my_color = GREEN;cout << "RED = " << RED << endl;    // 输出 0cout << "GREEN = " << GREEN << endl; // 输出 1cout << "BLUE = " << BLUE << endl;  // 输出 2return 0;
}

3.2 C++11 强类型枚举

enum class Direction { UP, DOWN, LEFT, RIGHT }; // 不会隐式转换为int
Direction dir = Direction::UP;// 错误:不能直接比较int和Direction
// if (dir == 0) { ... }// 正确方式:
if (dir == Direction::UP) {cout << "Going up!" << endl;
}

四、变量命名规则与最佳实践

4.1 命名规则

  • 只能使用字母、数字和下划线(_
  • 不能以数字开头
  • 区分大小写(age ≠ Age
  • 不可使用C++关键字(如 intclass

4.2 命名风格

风格示例适用场景
驼峰命名法myVariable变量名
蛇形命名法my_variable常量/宏定义
全大写MAX_VALUE全局常量

4.3 初始化建议

// 推荐方式(C++11统一初始化)
int x{5};      // 值初始化
int y{};       // 零初始化
int z{10.5};   // 编译错误(防止隐式窄化)// 不推荐方式
int a = 5;     // C风格初始化
int b = {5};   // C++11列表初始化

五、总结

数据类型用途示例
int存储整数int count = 100;
float/double存储小数double price = 9.99;
char存储单个字符char letter = 'Z';
bool存储逻辑值bool flag = true;
enum定义命名的整数常量集合enum Status { OK, ERROR };

相关文章:

  • 19.数学函数
  • eps8266作为AP服务端 esp32c3作为STA客户端
  • LVS +Keepalived 高可用群集
  • 稀疏大模型架构与训练算法研究
  • 【排坑指南】MySQL初始化后,Nacos与微服务无法连接??
  • 什么是gateway以及在微服务中是如何使用的
  • openEuler安装BenchmarkSQL
  • 使用YOLO模型进行线程安全推理
  • 如何高效实现公司文件管理
  • HarmonyOS5 分布式测试:断网情况支付场景异常恢复验证
  • 筑牢安全防线:电子文件元数据驱动的 AI 知识库可控管理方案
  • Redis从库读取主库创建且已过期的key
  • 断言(Assertion)中常用的正则表达式
  • 《汇编语言:基于X86处理器》第2章 x86处理器架构
  • Neo4j 入门到精通(Cypher语言详解)
  • 第 1 章,[标签 Win32] :第一个 WIn32 程序,头文件
  • pthread_once函数使用场景与原理
  • 设计模式精讲 Day 5:原型模式(Prototype Pattern)
  • NAT 与代理服务器 -- NAT,NAPT,正向代理,反向代理
  • 强化学习之 DQN、Double DQN、PPO
  • 淄博网站搭建公司/app推广方案范例
  • 生鲜网站建设规划书样板/国内免费域名
  • 珠海手机网站制作/seo外包上海
  • 做药品的电商网站有哪些/前端性能优化有哪些方法
  • 网站备案需要什么资料/百度推广竞价排名技巧
  • 东莞微网站制作公司/广州seo优化公司