CppStudio logo CppStudio
首页 / 教程 / 第14课

C++ 程序可视化教程 · 第14课 · 第二章 变量

auto 类型推导:让编译器替你写类型

auto 让编译器根据初值自动确定类型:auto a = 3 是 int,auto b = 3.14 是 double。 类型在编译期就定死,不影响运行速度。auto 必须写初值,否则无从推导、直接报错。

基本用法

auto a = 3;      // a 是 int
auto b = 3.14;   // b 是 double
auto c = 'X';    // c 是 char

编译器看 = 右边的初值,推导出左边的类型。推导发生在编译期——程序运行时,auto 变量与手写类型的变量没有任何差别,不存在性能损失。

必须给初值

auto x;     // 编译报错:无法推导
auto y = 0; // 正确:y 是 int

初值是 auto 推导的唯一依据,没有初值就没有类型。这条约束也顺手治好了"忘记初始化"的老毛病。

什么时候用

auto 适合两类场景:一是类型从初值一目了然,写出来是重复劳动(auto sum = a + b;);二是类型名字又长又难写——这个要等 STL 章节才有体会,届时遍历容器的迭代器类型动辄几十字符,auto 是标准解法。

反过来,初值看不出类型时不该用:auto x = f(); 读者不知道 x 是什么,不如写明 int x = f();。auto 是省事的工具,不是隐藏信息的工具。

可视化观察

在 CppStudio 中打开本课示例,点击播放:

  1. 四个 auto 变量依次出现在监视区,对照初值看它们各自的真实类型;
  2. a + 10 的结果 sum 也是 auto,监视区确认它是 int;
  3. 尝试把 auto b = 3.14; 改成 auto b; 再运行,亲眼看一次"无法推导"的编译报错。

常见错误

下一课:章末演练——用一个综合程序复盘变量的诞生、变化与消失。

▶ 运行本课示例 弹窗里直接跑,流程图同步展开;也可新窗口打开

常见问题

auto 是什么意思?

让编译器根据初始值自动推导类型:auto a = 3; 中 a 是 int,auto b = 3.14; 中 b 是 double。类型在编译时就确定,不是动态类型。

auto 可以不写初始值吗?

不可以。auto 靠初值推类型,auto x; 没有初值无从推导,直接编译报错。

auto 会让程序变慢吗?

不会。类型推导发生在编译期,运行时 auto 变量与手写类型的变量完全没有差别。

什么时候用 auto 合适?

类型明显从初值看得出时用(如 auto sum = a + b;),类型复杂难写时用(STL 迭代器,后续章节见)。初值看不出类型时(如 auto x = f();),写明类型更清楚。

陕ICP备2026020640号-1