[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-home-live-entry-setting":3,"site-header-contests":8,"site-header-camps":49,"study-material-detail-study-54":104},{"enabled":4,"title":5,"statusText":5,"buttonText":5,"campSlug":5,"stage":6,"classroomId":7,"hasClassroom":4},false,"",0,null,{"total":9,"list":10,"pageNum":44,"pageSize":45,"size":9,"startRow":44,"endRow":9,"pages":44,"prePage":6,"nextPage":6,"isFirstPage":46,"isLastPage":46,"hasPreviousPage":4,"hasNextPage":4,"navigatePages":47,"navigatepageNums":48,"navigateFirstPage":44,"navigateLastPage":44},3,[11,25,35],{"slug":12,"title":13,"logo":7,"liveUrl":14,"prize":15,"sponsor":16,"description":17,"organizer":18,"startTime":19,"endTime":20,"registrationDeadline":21,"status":22,"dashboardVisibility":23,"createdAt":24},"spring2026","2026春季启元人工智能大赛","https:\u002F\u002Fwww.bilibili.com\u002Fblackboard\u002Flive\u002Flive-activity-player.html?cid=1822703816&quality=0","200,000","麒麟软件有限公司","“2026春季启元人工智能大赛”是由启元实验室主办的面向全国人工智能领域开发者、科研人员及高校学生的权威赛事。大赛旨在促进与培养具备工程实践能力和创新能力的优秀人工智能领域开发者、推广国产软硬件技术与生态、助力国家人工智能产业高质量发展。\n各参赛选手需在规定的比赛周期内，依据赛事规则选定赛题并完成相应挑战，优胜者将共同角逐总额20万元的赛事奖金池，并且还将有机会获得实习和知名企业优质岗位内推资格。","启元实验室","2026-04-19 16:00:00","2026-07-13 16:00:00","2026-06-16 16:00:00","ongoing","private","2026-04-16 08:00:00",{"slug":26,"title":27,"logo":7,"liveUrl":14,"prize":28,"sponsor":7,"description":29,"organizer":18,"startTime":30,"endTime":31,"registrationDeadline":32,"status":33,"dashboardVisibility":23,"createdAt":34},"autumn2025","2025秋季启元人工智能大赛","150,000","“2025秋季启元人工智能大赛”是由启元实验室主办的面向全国人工智能领域开发者、科研人员及高校学生的权威赛事。大赛旨在促进与培养具备工程实践能力和创新能力的优秀人工智能领域开发者、推广国产软硬件技术与生态、助力国家人工智能产业高质量发展。","2025-11-08 08:00:00","2026-01-13 08:00:00","2025-12-30 08:00:00","ended","2025-11-03 08:00:00",{"slug":36,"title":37,"logo":7,"liveUrl":14,"prize":38,"sponsor":7,"description":39,"organizer":18,"startTime":40,"endTime":41,"registrationDeadline":42,"status":33,"dashboardVisibility":23,"createdAt":43},"summer2025","启元人工智能大赛(系统方向)","80,000","启元人工智能大赛由启元实验室主办，其中系统赛道基于启元实验室九源软件栈的相关开源项目，通过拉动开源社区力量，一方面促进国产智能计算生态的发展，另一方面也为人工智能系统方向的学生及从业者提供一个实践平台。","2025-07-08 08:00:00","2025-08-25 08:00:00","2025-07-22 08:00:00","2025-06-22 08:00:00",1,5,true,8,[44],{"total":45,"list":50,"pageNum":44,"pageSize":45,"size":45,"startRow":44,"endRow":45,"pages":44,"prePage":6,"nextPage":6,"isFirstPage":46,"isLastPage":46,"hasPreviousPage":4,"hasNextPage":4,"navigatePages":47,"navigatepageNums":103,"navigateFirstPage":44,"navigateLastPage":44},[51,62,73,84,94],{"id":52,"slug":53,"title":54,"logo":55,"publicLiveEmbedUrl":14,"description":56,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":16,"startTime":58,"endTime":59,"status":22,"dashboardVisibility":60,"createdAt":58,"updatedAt":61},"019eeeff-6b00-7d55-a629-efafded3e232","summer2026","2026年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2026-06\u002F019eef7f-7816-7828-9309-79c2c61dd568.jpg?Expires=1792752826&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=tqXtkjDVEuQBnsL07LARCfQJvdE%3D","由启元实验室发起的InfiniTensor大模型与人工智能系统训练营，面向开源社区、高校及产业界伙伴开放。活动以「普及AI全栈知识技术、培养工程实践与创新型人才、推广国产软硬件技术生态」为核心目标，助力国家人工智能产业高质量发展。","...","2026-06-22 08:00:00","2026-10-19 08:00:00","public","2026-10-12 08:00:00",{"id":63,"slug":64,"title":65,"logo":66,"publicLiveEmbedUrl":7,"description":67,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":68,"startTime":69,"endTime":70,"status":33,"dashboardVisibility":23,"createdAt":71,"updatedAt":72},"019af3f3-e06a-7245-aa8d-37dc99a69c73","winter2025","2025年冬季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2025-12\u002F019afc69-b7ca-7805-91fb-605429671c01.png?Expires=1792752826&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=tM28gi%2FKPywJvel7AqVcxFGnKTg%3D","由启元实验室发起的InfiniTensor大模型与人工智能系统训练营，面向开源社区、高校及产业界伙伴开放。活动以「普及AI全栈知识技术、培养工程实践与创新型人才、推广国产软硬件技术生态」为核心目标，助力国家人工智能产业高质量发展。 \n","新华三技术有限公司","2025-12-25 08:00:00","2026-03-27 08:00:00","2025-12-06 08:00:00","2026-10-22 20:24:30",{"id":74,"slug":36,"title":75,"logo":76,"publicLiveEmbedUrl":7,"description":77,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":78,"startTime":79,"endTime":80,"status":81,"dashboardVisibility":23,"createdAt":82,"updatedAt":83},"01980342-208c-7803-b3f3-19e1d31960ba","2025年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fuploads\u002F2025-07\u002F0198045e-28fe-78f0-95fe-23835ce58395.jpg?Expires=1792752826&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=RSwSsL0Rw0AFxM%2Bz65pGHzs2YLw%3D","InfiniTensor大模型与人工智能系统训练营由启元实验室及清华大学 AI 系统方向团队发起，面向开源社区、高校和产业界，普及人工智能各方面知识和技术，培养相关人才。训练营联合开源项目开发者、学术界大牛、工业界资深工程师参与授课与项目指导。课程采用「线上直播授课 + 在线答疑 + 项目实践辅导 」的方式进行，确保每位同学都能获得充分成长。训练营全程免费，通过视频、直播课、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。","北京积算科技有限公司","2025-07-14 08:00:00","2025-09-30 08:00:00","upcoming","2025-07-13 08:00:00","2026-10-22 20:24:58",{"id":85,"slug":86,"title":87,"logo":88,"publicLiveEmbedUrl":7,"description":89,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":5,"startTime":90,"endTime":91,"status":81,"dashboardVisibility":23,"createdAt":92,"updatedAt":93},"01980cf9-a7d8-7796-ae86-0bbe05334add","winter2024","2024年冬季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Ftesting-cdn.infinitensor.com\u002Fuploads\u002F2025-07\u002F01981269-ce23-7624-a287-9f07dd0d85f6.jpg","InfiniTensor大模型与人工智能系统训练营由清华大学发起，面向开源社区、高校和产业界，普及人工智能各方面知识和技术，培养相关人才。训练营全程免费，通过视频、直播课、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。报名学员请阅读“导学”课程页的训练营介绍。","2025-01-05 08:00:00","2025-03-22 08:00:00","2025-07-15 08:00:00","2026-10-22 20:24:39",{"id":95,"slug":96,"title":97,"logo":98,"publicLiveEmbedUrl":7,"description":99,"introduction":57,"organizer":18,"coOrganizer":5,"sponsor":5,"startTime":100,"endTime":101,"status":81,"dashboardVisibility":23,"createdAt":92,"updatedAt":102},"01980c20-363a-7dc3-8f5a-58a68e08dcc4","summer2024","2024年夏季InfiniTensor大模型与人工智能系统训练营","https:\u002F\u002Ftesting-cdn.infinitensor.com\u002Fuploads\u002F2025-07\u002F01981269-fbfa-788a-afcd-17fa9be74ff9.jpg","InfiniTensor大模型与人工智能系统训练营由清华大学发起，面向开源社区和高校，普及人工智能各方面知识和技术，培养相关人才。训练营全程免费，通过课程、习题和项目实践，在人工智能飞速发展的背景下，为学员提供一窥深层技术的机会。","2024-07-20 08:00:00","2024-09-29 08:00:00","2026-10-22 20:24:49",[44],{"currentItem":105,"processedData":124},{"img":106,"keywords":5,"treeType":44,"description":107,"showStatus":44,"updateTime":108,"type":109,"title":110,"content":111,"nextArticle":112,"createTime":108,"sortOrder":116,"canonicalPath":117,"id":118,"contentType":119,"prevArticle":120},"https:\u002F\u002Foss.infinitensor.com\u002Fprod\u002Fimages\u002FKnowledge_Base\u002FKB_54_fm.jpg?Expires=1792752826&OSSAccessKeyId=LTAI5t9R6uzvTa69CT92cFvV&Signature=VzAtOCwqZiAWmWLnhlbgqZB5yjY%3D","2025 InfiniTensor 冬季训练营 C++ 实践第1课：从零搭建 C++ 开发环境切入，带你认识 WSL、终端与 VS Code，掌握 ls、cd、mkdir、cat、code 等基础命令，理解 C++ 编译运行流程、main 函数结构、变量类型、初始化、cout 输出与 cin 输入，完成第一个可交互的 Hello World 小程序。","2026-10-22 20:38:11",2,"2025 冬季 InfiniTensor 训练营｜C++ 实践课（一）",">\"学编程\"这件事，跟学中文、学英文是一个道理——不是靠背字典学会说话的，是靠\"用\"学会的。\r\n\r\n所以这次冬季训练营 C++ 实践课，我们不念 PPT，不画架构图，打开电脑，现场写代码。 从新建一个文件夹开始，一步步搭项目，就跟你平时真正写代码一模一样。\r\n\r\n整套课一共 4 节，今天是第一节，默认零基础，从最简单的地方讲起。\r\n\r\n## 先把装备备齐\r\n写 C++ 之前，得先搞定两个东西：WSL 和 VS Code。\r\n\r\n**WSL**（Windows Subsystem for Linux）：在你的 Windows 里塞一套 Linux 系统，不用装双系统，不用重启，打开就能用 Linux 的命令行。\r\n\r\n那个黑底白字的窗口，就是**终端**（Terminal）。\r\n\r\n你肯定在电影里见过——黑客啪啪啪敲几行代码，屏幕上刷一堆绿字，然后系统就被黑了。那个画面，就是终端。创建文件、编译代码、运行程序，敲一行命令就搞定，图形界面得点五六下。\r\n\r\n**VS Code** 是个写代码的编辑器，免费、轻量、插件多。\r\n\r\n在终端里进入项目文件夹后，输入一句 `code .`，当前文件夹就直接在 VS Code 里打开了。\r\n\r\n而且 VS Code 自带终端，在里面敲 Linux 命令，跟系统终端效果一致。\r\n\r\n\r\n## 记住这 5 个命令\r\n这节课用到的 Linux 命令就 5 个，全是英文缩写，看一眼就记住了：\r\n\r\n\r\n| 命令 | 英文全称 | 用途 |\r\n| --- | --- | --- |\r\n| ls | list | 列出当前目录下的所有文件与文件夹 |\r\n| cd 目录名 | change directory | 进入指定目录 |\r\n| mkdir 文件夹名 | make directory | 新建文件夹（目录） |\r\n| cat 文件名 | concatenate | 在终端直接查看文件内容 |\r\n| code . | — | 用 VS Code 打开当前目录 |\r\n|       |       |       |\r\n\r\n\r\n来，跟着做一遍，30秒搞定：\r\n\r\n- 输入` mkdir playground` 创建项目文件夹\r\n- 输入 `cd playground` 进入该文件夹\r\n- 输入 `ls` 查看，文件夹为空，说明创建成功\r\n\r\n就这么简单。你已经完成了程序员日常工作的第一步：建项目。\r\n\r\n## 写下你的第一行 C++ 代码\r\n### 先搞懂一件事：C++是编译型语言\r\n你写的代码，计算机看不懂。它只认识 0 和 1。\r\n\r\n所以 C++ 代码写完之后，得经过一个**编译器**，把你写的\"人话\"翻译成机器能跑的\"机器话\"（二进制指令）。这个过程叫编译。\r\n\r\n流程就是：写代码 → 编译 → 运行。\r\n\r\n### 创建第一个文件\r\n在 playground 文件夹里，新建一个文件叫 `main.cpp`。\r\n\r\n`.cpp` 是 C++ 最常用的文件后缀，可以理解成\"这是个 C++ 文件\"的标记，跟 .jpg 是图片、.mp3 是音乐一个道理。\r\n\r\n### Hello World，启动！\r\n打开 `main.cpp`，把下面这段代码敲进去：\r\n\r\n```cpp\r\n#include \u003Ciostream>\r\nusing namespace std;\r\nint main() {\r\n    cout \u003C\u003C \"Hello World\" \u003C\u003C endl;\r\n    return 0;\r\n}\r\n```\r\n\r\n然后编译运行，终端上会蹦出一行：\r\nHello World\r\n恭喜你，你已经是一个能写 C++ 的人了。\r\n\r\n这几行到底在干嘛？\r\n\r\n| 代码 | 它在干嘛 |\r\n| --- | --- |\r\n| `#include \u003Ciostream>` | 引入输入输出库，必须写，否则无法使用 cout\u002Fcin |\r\n| `using namespace std;` | 使用标准命名空间，简化代码书写 |\r\n| `int main()` | 程序入口函数，程序从这里开始执行 |\r\n| `cout` | C++ 标准输出，用于在终端打印内容 |\r\n| `\u003C\u003C` | 流式输出符号，把内容传给输出流 |\r\n| `endl` | 换行，让输出更整洁 |\r\n| `return 0;` | 告诉操作系统：\"我正常结束了\" |\r\n\r\n\r\n## 变量：给数据找个\"盒子\"装起来\r\n写程序免不了要存数据。C++ 里存数据的容器叫**变量**。\r\n\r\n可以把变量想象成一个贴了标签的盒子：盒子有类型（只能装特定的东西），标签是名字（方便你找它）。\r\n\r\n### 两种最常用的数据类型：\r\n\r\n- `int`\t（integer）：整数类型（如 0、1、100、-5）\r\n- `double`：双精度浮点数，存小数（如 3.14、2.72）\r\n\r\n为什么有两种？因为计算机存整数和存小数的方式不一样。\r\n\r\n`double` 精度比另一个叫 `float` 的更高。\r\n\r\n### 怎么用？\r\n```cpp\r\n运行\r\n#include \u003Ciostream>\r\nusing namespace std;\r\nint main() {\r\n    double x = 3.14;\r\n    double y = 2.72;\r\n    cout \u003C\u003C x + y \u003C\u003C endl;\r\n    return 0;\r\n}\r\n```\r\n输出：5.86\r\n\r\n**重点来了：变量建议要初始化！**\r\n\r\n就是声明的时候就给它赋个值。不赋初值会出现\"未定义行为（undefined behavior）\"，结果不可预测。\r\n\r\n格式记好：类型 变量名 = 初始值;\r\n\r\n## 让程序跟你\"聊天\"：cin\r\n上面的程序只能单向输出，像个广播。如果你想让用户输入点什么呢？用 `cin`。\r\n\r\n`cin` 是 C++ 标准输入流，可以理解成程序在等你打字。\r\n\r\n来看个完整的例子：\r\n\r\n```cpp\r\n#include \u003Ciostream>\r\nusing namespace std;\r\n\r\nint main() {\r\n    int x, y;\r\n    cout \u003C\u003C \"请输入x的值：\";\r\n    cin >> x;                    \u002F\u002F 程序停在这里，等你输数字、按回车\r\n    cout \u003C\u003C \"请输入y的值：\";\r\n    cin >> y;\r\n    cout \u003C\u003C \"x = \" \u003C\u003C x \u003C\u003C endl;\r\n    cout \u003C\u003C \"y = \" \u003C\u003C y \u003C\u003C endl;\r\n    cout \u003C\u003C \"x + y = \" \u003C\u003C x + y \u003C\u003C endl;\r\n    return 0;\r\n}\r\n```\r\n\r\n运行之后，终端会显示：\r\n\r\n请输入x的值：5\r\n请输入y的值：3\r\nx = 5\r\ny = 3\r\nx + y = 8\r\n\r\n注意看符号：`cout` 用 `\u003C\u003C`（往外送），`cin` 用 `>>`（往里收）。箭头方向就是数据流动的方向，特别好记。\r\n\r\n## 本节课的收获\r\n\r\n1. C++ 开发完整流程：**新建文件 → 编写代码 → 编译 → 运行**。\r\n2. 命令行是编程基础，可高效管理文件与控制程序。\r\n3. 变量必须声明**类型**，尽量**初始化**，避免未定义行为。\r\n4. `cout` 负责输出内容，`cin` 负责读取输入，实现人机交互。\r\n5. 代码修改后一定要**重新编译**，否则运行结果不会更新。\r\n\r\n## 写在最后\r\n今天你已经跑通了第一个 C++ 程序，认识了终端，学会了变量和输入输出。这就是所有复杂程序的起点。\r\n\r\n学编程没有捷径，但有正路——就是动手写。\r\n\r\n>本次课程回放可访问 InfiniTensor 官网：https:\u002F\u002Fwww.infinitensor.com 查看，或点击【阅读原文】跳转。",{"publishTime":7,"createTime":108,"canonicalPath":113,"id":114,"title":115},"\u002Fstudy-material\u002Fstudy-53","study-53","InfiniTensor 冬季训练营前沿模型第五课《多模态智能及其应用》",55,"\u002Fstudy-material\u002Fstudy-54","study-54","markdown",{"publishTime":7,"createTime":108,"canonicalPath":121,"id":122,"title":123},"\u002Fstudy-material\u002Fstudy-55","study-55","2025 冬季 InfiniTensor 训练营｜C++ 实践课（二）",{"htmlContent":125,"headings":126},"\u003Cblockquote>\n\u003Cp>&quot;学编程&quot;这件事，跟学中文、学英文是一个道理——不是靠背字典学会说话的，是靠&quot;用&quot;学会的。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>所以这次冬季训练营 C++ 实践课，我们不念 PPT，不画架构图，打开电脑，现场写代码。 从新建一个文件夹开始，一步步搭项目，就跟你平时真正写代码一模一样。\u003C\u002Fp>\n\u003Cp>整套课一共 4 节，今天是第一节，默认零基础，从最简单的地方讲起。\u003C\u002Fp>\n\u003Ch2 id=\"先把装备备齐\">\u003Ca class=\"anchor\" href=\"#先把装备备齐\" aria-label=\"跳转到标题：先把装备备齐\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>先把装备备齐\u003C\u002Fh2>\u003Cp>写 C++ 之前，得先搞定两个东西：WSL 和 VS Code。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>WSL\u003C\u002Fstrong>（Windows Subsystem for Linux）：在你的 Windows 里塞一套 Linux 系统，不用装双系统，不用重启，打开就能用 Linux 的命令行。\u003C\u002Fp>\n\u003Cp>那个黑底白字的窗口，就是\u003Cstrong>终端\u003C\u002Fstrong>（Terminal）。\u003C\u002Fp>\n\u003Cp>你肯定在电影里见过——黑客啪啪啪敲几行代码，屏幕上刷一堆绿字，然后系统就被黑了。那个画面，就是终端。创建文件、编译代码、运行程序，敲一行命令就搞定，图形界面得点五六下。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>VS Code\u003C\u002Fstrong> 是个写代码的编辑器，免费、轻量、插件多。\u003C\u002Fp>\n\u003Cp>在终端里进入项目文件夹后，输入一句 \u003Ccode>code .\u003C\u002Fcode>，当前文件夹就直接在 VS Code 里打开了。\u003C\u002Fp>\n\u003Cp>而且 VS Code 自带终端，在里面敲 Linux 命令，跟系统终端效果一致。\u003C\u002Fp>\n\u003Ch2 id=\"记住这-5-个命令\">\u003Ca class=\"anchor\" href=\"#记住这-5-个命令\" aria-label=\"跳转到标题：记住这 5 个命令\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>记住这 5 个命令\u003C\u002Fh2>\u003Cp>这节课用到的 Linux 命令就 5 个，全是英文缩写，看一眼就记住了：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>命令\u003C\u002Fth>\n\u003Cth>英文全称\u003C\u002Fth>\n\u003Cth>用途\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>ls\u003C\u002Ftd>\n\u003Ctd>list\u003C\u002Ftd>\n\u003Ctd>列出当前目录下的所有文件与文件夹\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>cd 目录名\u003C\u002Ftd>\n\u003Ctd>change directory\u003C\u002Ftd>\n\u003Ctd>进入指定目录\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>mkdir 文件夹名\u003C\u002Ftd>\n\u003Ctd>make directory\u003C\u002Ftd>\n\u003Ctd>新建文件夹（目录）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>cat 文件名\u003C\u002Ftd>\n\u003Ctd>concatenate\u003C\u002Ftd>\n\u003Ctd>在终端直接查看文件内容\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>code .\u003C\u002Ftd>\n\u003Ctd>—\u003C\u002Ftd>\n\u003Ctd>用 VS Code 打开当前目录\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>来，跟着做一遍，30秒搞定：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>输入\u003Ccode> mkdir playground\u003C\u002Fcode> 创建项目文件夹\u003C\u002Fli>\n\u003Cli>输入 \u003Ccode>cd playground\u003C\u002Fcode> 进入该文件夹\u003C\u002Fli>\n\u003Cli>输入 \u003Ccode>ls\u003C\u002Fcode> 查看，文件夹为空，说明创建成功\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>就这么简单。你已经完成了程序员日常工作的第一步：建项目。\u003C\u002Fp>\n\u003Ch2 id=\"写下你的第一行-c-代码\">\u003Ca class=\"anchor\" href=\"#写下你的第一行-c-代码\" aria-label=\"跳转到标题：写下你的第一行 C++ 代码\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>写下你的第一行 C++ 代码\u003C\u002Fh2>\u003Ch3 id=\"先搞懂一件事-c-是编译型语言\">\u003Ca class=\"anchor\" href=\"#先搞懂一件事-c-是编译型语言\" aria-label=\"跳转到标题：先搞懂一件事：C++是编译型语言\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>先搞懂一件事：C++是编译型语言\u003C\u002Fh3>\u003Cp>你写的代码，计算机看不懂。它只认识 0 和 1。\u003C\u002Fp>\n\u003Cp>所以 C++ 代码写完之后，得经过一个\u003Cstrong>编译器\u003C\u002Fstrong>，把你写的&quot;人话&quot;翻译成机器能跑的&quot;机器话&quot;（二进制指令）。这个过程叫编译。\u003C\u002Fp>\n\u003Cp>流程就是：写代码 → 编译 → 运行。\u003C\u002Fp>\n\u003Ch3 id=\"创建第一个文件\">\u003Ca class=\"anchor\" href=\"#创建第一个文件\" aria-label=\"跳转到标题：创建第一个文件\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>创建第一个文件\u003C\u002Fh3>\u003Cp>在 playground 文件夹里，新建一个文件叫 \u003Ccode>main.cpp\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Cp>\u003Ccode>.cpp\u003C\u002Fcode> 是 C++ 最常用的文件后缀，可以理解成&quot;这是个 C++ 文件&quot;的标记，跟 .jpg 是图片、.mp3 是音乐一个道理。\u003C\u002Fp>\n\u003Ch3 id=\"hello-world-启动\">\u003Ca class=\"anchor\" href=\"#hello-world-启动\" aria-label=\"跳转到标题：Hello World，启动！\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>Hello World，启动！\u003C\u002Fh3>\u003Cp>打开 \u003Ccode>main.cpp\u003C\u002Fcode>，把下面这段代码敲进去：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-cpp\">#include &lt;iostream&gt;\nusing namespace std;\nint main() {\n    cout &lt;&lt; &quot;Hello World&quot; &lt;&lt; endl;\n    return 0;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>然后编译运行，终端上会蹦出一行：\u003Cbr>Hello World\u003Cbr>恭喜你，你已经是一个能写 C++ 的人了。\u003C\u002Fp>\n\u003Cp>这几行到底在干嘛？\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>代码\u003C\u002Fth>\n\u003Cth>它在干嘛\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>#include &lt;iostream&gt;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>引入输入输出库，必须写，否则无法使用 cout\u002Fcin\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>using namespace std;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>使用标准命名空间，简化代码书写\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>int main()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>程序入口函数，程序从这里开始执行\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>cout\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>C++ 标准输出，用于在终端打印内容\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>&lt;&lt;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>流式输出符号，把内容传给输出流\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>endl\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>换行，让输出更整洁\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>return 0;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>告诉操作系统：&quot;我正常结束了&quot;\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2 id=\"变量-给数据找个-quot-盒子-quot-装起来\">\u003Ca class=\"anchor\" href=\"#变量-给数据找个-quot-盒子-quot-装起来\" aria-label=\"跳转到标题：变量：给数据找个&amp;quot;盒子&amp;quot;装起来\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>变量：给数据找个&quot;盒子&quot;装起来\u003C\u002Fh2>\u003Cp>写程序免不了要存数据。C++ 里存数据的容器叫\u003Cstrong>变量\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Cp>可以把变量想象成一个贴了标签的盒子：盒子有类型（只能装特定的东西），标签是名字（方便你找它）。\u003C\u002Fp>\n\u003Ch3 id=\"两种最常用的数据类型\">\u003Ca class=\"anchor\" href=\"#两种最常用的数据类型\" aria-label=\"跳转到标题：两种最常用的数据类型：\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>两种最常用的数据类型：\u003C\u002Fh3>\u003Cul>\n\u003Cli>\u003Ccode>int\u003C\u002Fcode> （integer）：整数类型（如 0、1、100、-5）\u003C\u002Fli>\n\u003Cli>\u003Ccode>double\u003C\u002Fcode>：双精度浮点数，存小数（如 3.14、2.72）\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>为什么有两种？因为计算机存整数和存小数的方式不一样。\u003C\u002Fp>\n\u003Cp>\u003Ccode>double\u003C\u002Fcode> 精度比另一个叫 \u003Ccode>float\u003C\u002Fcode> 的更高。\u003C\u002Fp>\n\u003Ch3 id=\"怎么用\">\u003Ca class=\"anchor\" href=\"#怎么用\" aria-label=\"跳转到标题：怎么用？\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>怎么用？\u003C\u002Fh3>\u003Cpre>\u003Ccode class=\"language-cpp\">运行\n#include &lt;iostream&gt;\nusing namespace std;\nint main() {\n    double x = 3.14;\n    double y = 2.72;\n    cout &lt;&lt; x + y &lt;&lt; endl;\n    return 0;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>输出：5.86\u003C\u002Fp>\n\u003Cp>\u003Cstrong>重点来了：变量建议要初始化！\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>就是声明的时候就给它赋个值。不赋初值会出现&quot;未定义行为（undefined behavior）&quot;，结果不可预测。\u003C\u002Fp>\n\u003Cp>格式记好：类型 变量名 = 初始值;\u003C\u002Fp>\n\u003Ch2 id=\"让程序跟你-quot-聊天-quot-cin\">\u003Ca class=\"anchor\" href=\"#让程序跟你-quot-聊天-quot-cin\" aria-label=\"跳转到标题：让程序跟你&amp;quot;聊天&amp;quot;：cin\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>让程序跟你&quot;聊天&quot;：cin\u003C\u002Fh2>\u003Cp>上面的程序只能单向输出，像个广播。如果你想让用户输入点什么呢？用 \u003Ccode>cin\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Cp>\u003Ccode>cin\u003C\u002Fcode> 是 C++ 标准输入流，可以理解成程序在等你打字。\u003C\u002Fp>\n\u003Cp>来看个完整的例子：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-cpp\">#include &lt;iostream&gt;\nusing namespace std;\n\nint main() {\n    int x, y;\n    cout &lt;&lt; &quot;请输入x的值：&quot;;\n    cin &gt;&gt; x;                    \u002F\u002F 程序停在这里，等你输数字、按回车\n    cout &lt;&lt; &quot;请输入y的值：&quot;;\n    cin &gt;&gt; y;\n    cout &lt;&lt; &quot;x = &quot; &lt;&lt; x &lt;&lt; endl;\n    cout &lt;&lt; &quot;y = &quot; &lt;&lt; y &lt;&lt; endl;\n    cout &lt;&lt; &quot;x + y = &quot; &lt;&lt; x + y &lt;&lt; endl;\n    return 0;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>运行之后，终端会显示：\u003C\u002Fp>\n\u003Cp>请输入x的值：5\u003Cbr>请输入y的值：3\u003Cbr>x = 5\u003Cbr>y = 3\u003Cbr>x + y = 8\u003C\u002Fp>\n\u003Cp>注意看符号：\u003Ccode>cout\u003C\u002Fcode> 用 \u003Ccode>&lt;&lt;\u003C\u002Fcode>（往外送），\u003Ccode>cin\u003C\u002Fcode> 用 \u003Ccode>&gt;&gt;\u003C\u002Fcode>（往里收）。箭头方向就是数据流动的方向，特别好记。\u003C\u002Fp>\n\u003Ch2 id=\"本节课的收获\">\u003Ca class=\"anchor\" href=\"#本节课的收获\" aria-label=\"跳转到标题：本节课的收获\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>本节课的收获\u003C\u002Fh2>\u003Col>\n\u003Cli>C++ 开发完整流程：\u003Cstrong>新建文件 → 编写代码 → 编译 → 运行\u003C\u002Fstrong>。\u003C\u002Fli>\n\u003Cli>命令行是编程基础，可高效管理文件与控制程序。\u003C\u002Fli>\n\u003Cli>变量必须声明\u003Cstrong>类型\u003C\u002Fstrong>，尽量\u003Cstrong>初始化\u003C\u002Fstrong>，避免未定义行为。\u003C\u002Fli>\n\u003Cli>\u003Ccode>cout\u003C\u002Fcode> 负责输出内容，\u003Ccode>cin\u003C\u002Fcode> 负责读取输入，实现人机交互。\u003C\u002Fli>\n\u003Cli>代码修改后一定要\u003Cstrong>重新编译\u003C\u002Fstrong>，否则运行结果不会更新。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"写在最后\">\u003Ca class=\"anchor\" href=\"#写在最后\" aria-label=\"跳转到标题：写在最后\">\u003Cspan class=\"octicon octicon-link\">\u003C\u002Fspan>\u003C\u002Fa>写在最后\u003C\u002Fh2>\u003Cp>今天你已经跑通了第一个 C++ 程序，认识了终端，学会了变量和输入输出。这就是所有复杂程序的起点。\u003C\u002Fp>\n\u003Cp>学编程没有捷径，但有正路——就是动手写。\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>本次课程回放可访问 InfiniTensor 官网：\u003Ca href=\"https:\u002F\u002Fwww.infinitensor.com\">https:\u002F\u002Fwww.infinitensor.com\u003C\u002Fa> 查看，或点击【阅读原文】跳转。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n",[127,129,132,135,138,140,143,146,149,152,155,157],{"id":128,"text":128,"level":109},"先把装备备齐",{"id":130,"text":131,"level":109},"记住这-5-个命令","记住这 5 个命令",{"id":133,"text":134,"level":109},"写下你的第一行-c-代码","写下你的第一行 C++ 代码",{"id":136,"text":137,"level":9},"先搞懂一件事-c-是编译型语言","先搞懂一件事：C++是编译型语言",{"id":139,"text":139,"level":9},"创建第一个文件",{"id":141,"text":142,"level":9},"hello-world-启动","Hello World，启动！",{"id":144,"text":145,"level":109},"变量-给数据找个-quot-盒子-quot-装起来","变量：给数据找个&quot;盒子&quot;装起来",{"id":147,"text":148,"level":9},"两种最常用的数据类型","两种最常用的数据类型：",{"id":150,"text":151,"level":9},"怎么用","怎么用？",{"id":153,"text":154,"level":109},"让程序跟你-quot-聊天-quot-cin","让程序跟你&quot;聊天&quot;：cin",{"id":156,"text":156,"level":109},"本节课的收获",{"id":158,"text":158,"level":109},"写在最后"]