C++自学之路1:Hello world

📅 2026/7/1 2:41:36
C++自学之路1:Hello world
C 语法基础本文主要通过Hello world这样一个简单的c程序来认识C的基础语法框架本文内容主要来自OI wiki#include iostream // 引用头文件 int main() // 定义 main 函数 { std::cout Hello, world!; // 使用标准命名空间中的 cout 函数 return 0; // 返回 0结束 main 函数。编译器一般会自动加上这一行一般可以省略 }#include stdio.h // 引用头文件 int main() // 定义 main 函数 { printf(Hello, world!); // 输出 Hello, world! return 0; // 返回 0结束 main 函数 }1、什么是#include#include其实是一个预处理命令意思为将一个文件「放」在这条语句处被「放」的文件被称为头文件。也就是说在编译时编译器会「复制」头文件 iostream 中的内容「粘贴」到#include iostream这条语句处。这样你就可以使用 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 iostream。可以 #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。3、注释在 C 代码中注释有两种写法行内注释以//开头行内位于其后的内容全部为注释。注释块以/*开头*/结尾中间的内容全部为注释可以跨行。注释对程序运行没有影响可以用来解释程序的意思还可以在让某段代码不执行但是依然保留在源文件里。在工程开发中注释可以便于日后维护、他人阅读。//这是一行注释 /*这是 多行注释*/ #include iostream int main() { //std::cout Hello, world!; // 这段代码被注释掉了不会执行可以用这个技巧来找Bug return 0; }4、输入与输出cin与cout#include iostream int main() { int x, y; // 声明变量 std::cin x y; // 读入 x 和 y std::cout y std::endl x; // 输出 y换行再输出 x return 0; // 结束主函数 }endl的功能是换行。这里可以直接使用命名空间std这样就不用反复输入std::了#include iostream using namespace std; int main() { int x, y; // 声明变量 cin x y; // 读入 x 和 y cout y endl x; // 输出 y换行再输出 x return 0; // 结束主函数 }scanf与printfscanf与printf其实是 C 语言提供的函数。大多数情况下它们的速度比cin和cout更快并且能够方便地控制输入输出格式。在C里想要控制输入输出格式需要用到一些头文件如iomanip#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型的变量。类似的类型标识符还有%s表示字符串。%c表示字符。%lf表示双精度浮点数 (double)。%lld表示长整型 (long long)。根据系统不同也可能是%I64d。%u表示无符号整型 (unsigned int)。%llu表示无符号长整型 (unsigned long long)也可能是%I64u。除了类型标识符以外还有一些控制格式的方式。许多都不常用选取两个常用的列举如下%1d表示长度为 1 的整型。在读入时即使没有空格也可以逐位读入数字。在输出时若指定的长度大于数字的位数就会在数字前用空格填充。若指定的长度小于数字的位数就没有效果。%.6lf用于输出保留六位小数。这两种运算符的相应地方都可以填入其他数字例如%.3lf表示保留三位小数。