专栏文章

C++ 语法基础

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min7y1ym
此快照首次捕获于
2025/12/01 22:02
3 个月前
此快照最后确认于
2025/12/01 22:02
3 个月前
查看原文
代码框架
如果你不想深究背后的原理,初学时可以直接将这个「框架」背下来:
CPP
#include <cstdio>
#include <iostream>
int main() {
  // do something...
  return 0;
}
(1).什么是 include?
#include 其实是一个预处理命令,意思为将一个文件「放」在这条语句处,被「放」的文件被称为头文件。也就是说,在编译时,编译器会「复制」头文件 iostream 中的内容,「粘贴」到 #include 这条语句处。这样,你就可以使用 iostream 中提供的 std::cin、std::cout、std::endl 等对象了。
如果你学过 C 语言,你会发现目前我们接触的 C++ 中的头文件一般都不带 .h 后缀,而那些 C 语言中的头文件 xx.h 都变成了 cxx,如 stdio.h 变成了 cstdio。因为 C++ 为了和 C 保持兼容,都直接使用了 C 语言中的头文件,为了区分 C++ 的头文件和 C 的头文件,使用了 c 前缀。
一般来说,应当根据你需要编写的 C++ 程序的需要来确定你要 #include 哪些头文件。但如果你 #include 了多余的头文件,只会增加编译时间,几乎不会对运行时间造成影响。目前我们只接触到了 iostream 和 cstdio 两个头文件,如果你只需要 scanf 和 printf,就可以不用 #include
可以 #include 自己写的头文件吗?答案是,可以。
你可以自己写一个头文件,如:myheader.h。然后,将其放到和你的代码相同的目录里,再 #include "myheader.h" 即可。需要注意的是,自定义的头文件需要使用引号而非尖括号。当然,你也可以使用编译命令 -I <header_file_path> 来告诉编译器在哪找头文件,就不需要将头文件放到和代码相同的目录里了。
(2).什么是 main()?
可以理解为程序运行时就会执行 main() 中的代码。
实际上,main 函数是由系统或外部程序调用的。如,你在命令行中调用了你的程序,也就是调用了你程序中的 main 函数(在此之前先完成了全局 变量 的构造)。
最后的 return 0; 表示程序运行成功。默认情况下,程序结束时返回 0 表示一切正常,否则返回值表示错误代码(在 Windows 下这个错误代码的十六进制可以通过 Windows Error Codes 网站 进行查询)。这个值返回给谁呢?其实就是调用你写的程序的系统或外部程序,它会在你的程序结束时接收到这个返回值。如果不写 return 语句的话,程序正常结束默认返回值也是 0。
在 C 或 C++ 中,程序的返回值不为 0 会导致运行时错误(RE)。
注释
在 C++ 代码中,注释有两种写法:
行内注释
以 // 开头,行内位于其后的内容全部为注释。
注释块
以 /* 开头,*/ 结尾,中间的内容全部为注释,可以跨行。
注释对程序运行没有影响,可以用来解释程序的意思,还可以在让某段代码不执行(但是依然保留在源文件里)。
在工程开发中,注释可以便于日后维护、他人阅读。
在 OI 中,很少有人写许多注释,但注释可以便于在写代码的时候理清思路,或者便于日后复习。而且,如果要写题解、教程的话,适量的注释可以便于读者阅读,理解代码的意图。希望各位同学能养成写注释的好习惯。
输入与输出
cin 与 cout
CPP
#include <iostream>

int main() {
  int x, y;                          // 声明变量
  std::cin >> x >> y;                // 读入 x 和 y
  std::cout << y << std::endl << x;  // 输出 y,换行,再输出 x
  return 0;                          // 结束主函数
}
什么是 std?
std 是 C++ 标准库所使用的 命名空间。使用命名空间是为了避免重名。
scanf 与 printf
scanf 与 printf 其实是 C 语言提供的函数。大多数情况下,它们的速度比 cin 和 cout 更快,并且能够方便地控制输入输出格式。
CPP
#include <cstdio>

int main() {
  int x, y;
  scanf("%d%d", &x, &y);   // 读入 x 和 y
  printf("%d\n%d", y, x);  // 输出 y,换行,再输出 x
  return 0;
}
其中,%d 表示读入/输出的变量是一个有符号整型(int 型)的变量。
类似地:
1.%s 表示字符串。
2.%c 表示字符。
3.%lf 表示双精度浮点数 (double)。
4.%lld 表示长整型 (long long)。根据系统不同,也可能是 %I64d。
5.%u 表示无符号整型 (unsigned int)。
6.%llu 表示无符号长整型 (unsigned long long),也可能是 %I64u。
除了类型标识符以外,还有一些控制格式的方式。许多都不常用,选取两个常用的列举如下:
1.%1d 表示长度为 1 的整型。在读入时,即使没有空格也可以逐位读入数字。在输出时,若指定的长度大于数字的位数,就会在数字前用空格填充。若指定的长度小于数字的位数,就没有效果。
2.%.6lf,用于输出,保留六位小数。

评论

0 条评论,欢迎与作者交流。

正在加载评论...