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;
}
相关推荐
Marktowin2 小时前
Mybatis-Plus更新操作时的一个坑
java·后端
赵文宇2 小时前
CNCF Dragonfly 毕业啦!基于P2P的镜像和文件分发系统快速入门,在线体验
后端
程序员爱钓鱼2 小时前
Node.js 编程实战:即时聊天应用 —— WebSocket 实现实时通信
前端·后端·node.js
Libby博仙3 小时前
Spring Boot 条件化注解深度解析
java·spring boot·后端
源代码•宸3 小时前
Golang原理剖析(Map 源码梳理)
经验分享·后端·算法·leetcode·golang·map
小周在成长3 小时前
动态SQL与MyBatis动态SQL最佳实践
后端
瓦尔登湖懒羊羊4 小时前
TCP的自我介绍
后端
小周在成长4 小时前
MyBatis 动态SQL学习
后端
子非鱼9214 小时前
SpringBoot快速上手
java·spring boot·后端
我爱娃哈哈4 小时前
SpringBoot + XXL-JOB + Quartz:任务调度双引擎选型与高可用调度平台搭建
java·spring boot·后端