← 返回 C++ 学习记录

C++ JOURNAL / 基础语法

程序结构与输入输出

从 main 开始,弄清头文件、std 和输入输出的关系。

按我的学习记录整理 · 示例用于帮助理解
这篇记录里

一个程序从哪里开始

下面是整理用的小例子,不代表新增的学习经历。

#include <iostream>
using namespace std;

int main() {
    int a = 0, b = 0;
    cin >> a >> b;
    cout << a + b << endl;
    cout << 'a' << endl;
    return 0;
}

输入 2 3,输出先是 5,下一行是字符 a。

#include 引入相应头文件的声明,让程序可以使用对应的工具。<iostream> 提供输入输出;<cmath> 提供 sqrt 等数学函数;<iomanip> 提供 setw、setprecision;使用 string 时还应包含 <string>。

程序进入 main 后,通常按语句顺序执行,遇到分支或循环则按它们的规则运行。int main() 的返回类型是整数;return 0; 表示正常结束程序,不是在终端输出 0。

cin、cout 和箭头

在这里的流输入输出中:

  • cin >> a;:把输入读进变量 a。
  • cout << a;:把 a 输出到终端。
  • cin >> a >> b;:按顺序读取两个值,通常可以用空格或换行分隔。
  • endl:换行并刷新输出。
  • cout << 'a';:输出字符 a,不是整数 97。

我曾经把输出写成 cout >> i;。应该改成 cout << i;。这两个箭头在流输入输出中的方向不能写反。

using namespace std 和 std::

cout、cin、string 都在标准库的 std 命名空间中。写了 using namespace std;,这些名字通常可以直接使用。也可以不写这一句,改为每次明确写出:

#include <iostream>
#include <string>

int main() {
    std::string name;
    std::cin >> name;
    std::cout << name << std::endl;
    return 0;
}

:: 叫作用域解析运算符。std::cout 的意思是“std 里的 cout”。我也问过类和静态成员中的 :::那里同样用于说明名字属于哪个作用域,例如“某个类里的成员”。这里只记住这个含义,不展开类的知识。

void 是什么意思

函数返回类型写成 void,表示这个函数不返回一个值。它仍然可以做事情,例如输出文字。

#include <iostream>
void hello() {
    std::cout << "Hello" << std::endl;
}
int main() {
    hello();
    return 0;
}

void 是特殊类型,不能像 int a; 那样定义一个普通的 void 变量。它不表示“返回数字 0”。

在 VS Code 中运行

基本顺序是保存 .cpp 文件、用编译器编译、运行生成的程序,然后在终端输入数据、查看输出。VS Code 是编辑器;实际编译 C++ 的是配置好的编译器。修改代码后要重新编译,避免运行旧程序。

程序运行结束与终端是否关闭不是同一件事,后者取决于启动方式。窗口关闭、红色波浪线等问题,放在调试与排错记录中。

返回全部学习记录 ↗