猪你生日快乐 發表於 2025-11-29 23:26:00

C++自学之路1:Hello world

<h1 id="c-语法基础">C++ 语法基础</h1>
<p>本文主要通过Hello world这样一个简单的c++程序来认识C++的基础语法框架</p>
<p>本文内容主要来自OI wiki</p>
<pre><code class="language-c++">#include &lt;iostream&gt;// 引用头文件

int main()                        // 定义 main 函数
{                     
std::cout &lt;&lt; "Hello, world!";// 使用标准命名空间中的 cout 函数
return 0;// 返回 0,结束 main 函数。编译器一般会自动加上这一行,一般可以省略
}
</code></pre>
<pre><code class="language-c">#include &lt;stdio.h&gt;// 引用头文件

int main()                                         // 定义 main 函数
{               
printf("Hello, world!");// 输出 Hello, world!
return 0;               // 返回 0,结束 main 函数
}
</code></pre>
<h2 id="1什么是-include"><strong>1、什么是 <code>#include</code>?</strong></h2>
<p><code>#include</code> 其实是一个预处理命令,意思为将一个文件「放」在这条语句处,被「放」的文件被称为头文件。也就是说,在编译时,编译器会「复制」头文件 iostream 中的内容,「粘贴」到 <code>#include &lt;iostream&gt;</code> 这条语句处。这样,你就可以使用 iostream 中提供的 <code>std::cin</code>、<code>std::cout</code>、<code>std::endl</code> 等对象了。</p>
<p>如果你学过 C 语言,你会发现目前我们接触的 C++ 中的头文件一般都不带 .h 后缀,而那些 C 语言中的头文件 xx.h 都变成了 cxx,如 stdio.h 变成了 cstdio。因为 C++ 为了和 C 保持兼容,都直接使用了 C 语言中的头文件,为了区分 C++ 的头文件和 C 的头文件,使用了 c 前缀。</p>
<p>一般来说,应当根据你需要编写的 C++ 程序的需要来确定你要 #include 哪些头文件。但如果你 #include 了多余的头文件,只会增加编译时间,几乎不会对运行时间造成影响。目前我们只接触到了 iostream 和 cstdio 两个头文件,如果你只需要 scanf 和 printf,就可以不用 <code>#include &lt;iostream&gt;</code>。</p>
<p>可以 #include 自己写的头文件吗?答案是,可以。</p>
<p>你可以自己写一个头文件,如:myheader.h。然后,将其放到和你的代码相同的目录里,再 #include "myheader.h" 即可。需要注意的是,自定义的头文件需要使用引号而非尖括号。当然,你也可以使用编译命令 -I &lt;header_file_path&gt; 来告诉编译器在哪找头文件,就不需要将头文件放到和代码相同的目录里了。</p>
<h2 id="2什么是-main"><strong>2、什么是 <code>main()</code>?</strong></h2>
<p>可以理解为程序运行时就会执行 <code>main()</code> 中的代码。</p>
<p>实际上,main 函数是由系统或外部程序调用的。如,你在命令行中调用了你的程序,也就是调用了你程序中的 main 函数(在此之前先完成了全局 变量 的构造)。</p>
<p>最后的 <code>return 0;</code> 表示程序运行成功。默认情况下,程序结束时返回 0 表示一切正常,否则返回值表示错误代码(在 Windows 下这个错误代码的十六进制可以通过Windows Error Codes 网站 进行查询)。这个值返回给谁呢?其实就是调用你写的程序的系统或外部程序,它会在你的程序结束时接收到这个返回值。如果不写 return 语句的话,程序正常结束默认返回值也是 0。</p>
<p>在 C 或 C++ 中,程序的返回值不为 0 会导致运行时错误(RE)。</p>
<h2 id="3注释">3、注释</h2>
<p>在 C++ 代码中,注释有两种写法:</p>
<ol>
<li>
<p>行内注释</p>
<p>以 <code>//</code> 开头,行内位于其后的内容全部为注释。</p>
</li>
<li>
<p>注释块</p>
<p>以 <code>/*</code> 开头,<code>*/</code> 结尾,中间的内容全部为注释,可以跨行。</p>
</li>
</ol>
<p>注释对程序运行没有影响,可以用来解释程序的意思,还可以在让某段代码不执行(但是依然保留在源文件里)。</p>
<p>在工程开发中,注释可以便于日后维护、他人阅读。</p>
<pre><code class="language-c++">//这是一行注释

/*这是
多行注释*/

#include &lt;iostream&gt;

int main()                        
{                     
//std::cout &lt;&lt; "Hello, world!";// 这段代码被注释掉了,不会执行,可以用这个技巧来找Bug
return 0;
}
</code></pre>
<h2 id="4输入与输出">4、输入与输出</h2>
<h3 id="cin-与-cout"><code>cin</code> 与 <code>cout</code></h3>
<pre><code class="language-c++">#include &lt;iostream&gt;

int main()
{
int x, y;                        // 声明变量
std::cin &gt;&gt; x &gt;&gt; y;                // 读入 x 和 y
std::cout &lt;&lt; y &lt;&lt; std::endl &lt;&lt; x;// 输出 y,换行,再输出 x
return 0;                        // 结束主函数
}
</code></pre>
<p>endl的功能是换行。</p>
<p>这里可以直接使用命名空间std,这样就不用反复输入std::了:</p>
<pre><code class="language-c++">#include &lt;iostream&gt;
using namespace std;
int main()
{
int x, y;                        // 声明变量
cin &gt;&gt; x &gt;&gt; y;                       // 读入 x 和 y
cout &lt;&lt; y &lt;&lt; endl &lt;&lt; x;                       // 输出 y,换行,再输出 x
return 0;                        // 结束主函数
}
</code></pre>
<h3 id="scanf-与-printf"><code>scanf</code> 与 <code>printf</code></h3>
<p><code>scanf</code> 与 <code>printf</code> 其实是 C 语言提供的函数。大多数情况下,它们的速度比 <code>cin</code> 和 <code>cout</code> 更快,并且能够方便地控制输入输出格式。在C++里想要控制输入输出格式需要用到一些头文件,如iomanip</p>
<pre><code class="language-c++">#include &lt;cstdio&gt;

int main()
{
int x, y;
scanf("%d%d", &amp;x, &amp;y);   // 读入 x 和 y
printf("%d\n%d", y, x);// 输出 y,换行,再输出 x
return 0;
}
</code></pre>
<p>其中,类型标识符<code>%d</code> 表示读入/输出的变量是一个有符号整型(<code>int</code> 型)的变量。</p>
<p>类似的类型标识符还有:</p>
<ol>
<li><code>%s</code> 表示字符串。</li>
<li><code>%c</code> 表示字符。</li>
<li><code>%lf</code> 表示双精度浮点数 (<code>double</code>)。</li>
<li><code>%lld</code> 表示长整型 (<code>long long</code>)。根据系统不同,也可能是 <code>%I64d</code>。</li>
<li><code>%u</code> 表示无符号整型 (<code>unsigned int</code>)。</li>
<li><code>%llu</code> 表示无符号长整型 (<code>unsigned long long</code>),也可能是 <code>%I64u</code>。</li>
</ol>
<p>除了类型标识符以外,还有一些控制格式的方式。许多都不常用,选取两个常用的列举如下:</p>
<ol>
<li><code>%1d</code> 表示长度为 1 的整型。在读入时,即使没有空格也可以逐位读入数字。在输出时,若指定的长度大于数字的位数,就会在数字前用空格填充。若指定的长度小于数字的位数,就没有效果。</li>
<li><code>%.6lf</code>,用于输出,保留六位小数。</li>
</ol>
<p>这两种运算符的相应地方都可以填入其他数字,例如 <code>%.3lf</code> 表示保留三位小数。</p><br><br>
来源:https://www.cnblogs.com/Rosemary220505/p/19287739
頁: [1]
查看完整版本: C++自学之路1:Hello world