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++ 的是配置好的编译器。修改代码后要重新编译,避免运行旧程序。
程序运行结束与终端是否关闭不是同一件事,后者取决于启动方式。窗口关闭、红色波浪线等问题,放在调试与排错记录中。