C++——数据类型(变量与常量、auto、常用转义字符)

一、变量与常量

1. 变量

  • 可变性: 变量的值在程序运行过程中可以被修改和读取。
  • 声明: 例如 int age = 20;

2. 常量

  • 不可变性: 常量的值在声明后不能被修改。
  • 声明: 使用关键字 const 声明常量。
ini 复制代码
const int MAX_VALUE = 100;
  • 作用: 常量用于表示程序中不应该被改变的值,提高代码的可读性和安全性。

二、auto 自动类型推断 (Automatic Type Deduction)

auto 关键字是 C++11 引入的非常方便的特性,可以简化代码并提高可读性。

  • 编译器自动推断: auto 允许编译器根据变量的初始化值自动推断变量的类型,而无需显式指定。

    • 例如:

      ini 复制代码
      auto x = 10;       // x 被推断为 int
      auto y = 3.14;     // y 被推断为 double
      auto z = "hello";   // z 被推断为 const char*
      std::vector<int> myVector = {1, 2, 3};
      auto it = myVector.begin(); // it 被推断为 std::vector<int>::iterator
  • 适用场景:

    • 类型名过长或复杂: 例如在使用标准库容器时,迭代器的类型通常很长,使用 auto 可以简化声明。
    • 类型不明确: 某些情况下,表达式的返回类型可能比较复杂或不直观,使用 auto 可以让代码更简洁。
  • 提高代码可读性: 在某些情况下,auto 可以让代码更专注于变量的含义,而不是具体的类型。

  • 注意事项:

    • auto 必须初始化:编译器需要根据初始值来推断类型。
    • auto 的推断结果是明确的,不是简单的"万能类型"。
    • 过度使用 auto 可能会降低代码的可读性,尤其是在不清楚变量类型的情况下。应该在提高代码可读性和维护性之间找到平衡。

三、常用转义字符 (Escape Sequences)

转义字符用于在字符串中表示一些特殊的字符,这些字符不能直接输入或具有特殊的含义。

  • \n: 换行符 (Newline) - 将光标移动到下一行开头。
  • \t: 水平制表符 (Horizontal Tab) - 将光标移动到下一个制表位。
  • ': 单引号 (Single Quote) - 用于在单引号包围的字符常量中表示单引号自身,例如 '''。
  • ": 双引号 (Double Quote) - 用于在双引号包围的字符串字面量中表示双引号自身,例如 "abc"def"。
  • \: 反斜杠 (Backslash) - 用于表示反斜杠自身,例如 "C:\Windows"。
  • ?: 问号 (Question Mark) - 用于避免某些编译器将 ?? 解释为三字符序列。
  • \0: 空字符 (Null Character) - 表示字符串的结尾,用于 C 风格的字符串。
  • ``: 空格 - 虽然不是转义字符,但空格在字符串中也是常用的字符。

示例:

c 复制代码
#include <iostream>

int main() {
  std::cout << "第一行\n第二行" << std::endl;
  std::cout << "Name:\tJohn\tAge:\t30" << std::endl;
  std::cout << "单引号:',双引号:",反斜杠:\" << std::endl;
  return 0;
}
相关推荐
ZhengEnCi4 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
王中阳Go4 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
程序猿DD4 小时前
OctaFuse Gateway 2.18.0:MCP 接入支持 OAuth,供应商粘性绑定可视化管理
后端
ZhengEnCi6 小时前
Agent 规则管理:让 Memory 做索引、让 Skill 存规则——上下文上限实测与分工方案
后端
nice_lcj5206 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
骑着蜗牛撵大象3277 小时前
2026 后端 AI 工程化:Spring AI 管调用、MCP 管工具、Agent 内嵌管自治
java·人工智能·后端·spring·ai·可观测性·mcp
摸爬滚打的小李7 小时前
Spring XML + WAR + Tomcat 项目启动
后端
IT_陈寒8 小时前
SpringBoot自动配置的坑,这次终于爬出来了
前端·人工智能·后端
RainbowFish8 小时前
# RAG 与智能体记忆:从原理到工程实践 > 一篇给学习者的总结。
后端
苏三说技术9 小时前
为什么越来越多人用Arthas 4 ?
后端