日期:2020年3月17日
作者:Commas
注释:开始我的C++学习的奇妙之旅,愿意和我一起学习的小伙伴们可以关注我,也可以给我点赞,如若博客有哪里写的不好的地方,还望各位看官指出,非常感谢……
更多C++内容,请看我的《C++学习的奇妙之旅》
一、学习一门技术,首先来个Hello World
大神说过一句话,任何一门语言或技术,在控制台打印出“Hello World”,就说明你入门了,我也就毫不犹豫的写下了以下代码:
#include <iostream> //引入输入输出类库
using namespace std; //使用std的命名空间
// main() 是主程序,程序开始执行的地方
int main()
{
cout<<"Hello World"<<endl;
cout<<"Welcome to C++"<<endl;
// 终止 main( )函数,并向调用进程返回值 0。
return 0;
}
控制台完美输出:
Hello World
Welcome to C++
但是入门简单,精通难啊,努力吧,先做个C++菜鸟Coder
吧,当不了将军,就从士兵做起咯……
二、解读C++的Hello Word程序
如上图所示,按照我的理解,分成了三大块:
(1)引入代码(类库)
#include <iostream>
实际上是一个输出流类库,此库定义了4个IO对象:cout、cin、cerr和clog,所以后续我们使用到的cout
就是这个类库的一个标准输出流对象。
如果不引用此类库(即在首行注释#include <iostream>
),那么使用cout
和endl
就会抛出异常,如下:
tempCodeRunnerFile.cpp: In function 'int main()':
tempCodeRunnerFile.cpp:8:5: error: 'cout' was not declared in this scope
cout<<"Hello World"<<endl;
^~~~
tempCodeRunnerFile.cpp:8:26: error: 'endl' was not declared in this scope
cout<<"Hello World"<<endl;
^~~~
tempCodeRunnerFile.cpp:8:26: note: suggested alternative: 'enum'
cout<<"Hello World"<<endl;
^~~~
enum
看到上面抛出的异常,可以知道,cout
和endl
没有被定义,由此我们也可以推测出来,这些标识符应该都是被人预先定义好在输出流类库<iostream>
中。
知识加油站:
对象 | 说明 |
---|---|
cin | 标准输入流 |
cout | 标准输出流 |
cerr | 错误的标准输出流 |
clog | 用于记录的标准输出流 |
(2)设置命名空间
为了避免导致全局命名冲突问题,所以才引入了命名空间
这一概念。命名空间,就是一种将程序库(如<iostream>)
名称封装起来的方法,它就像在各个程序库中建起了一道道围墙
using namespace std;
直译为使用命名空间std
,这个翻译很OK,作用是提供一个全局的命名空间std。倘若不使用std
的namespace,那么我们就需要加入加上前缀std,如下:
std::cout
//而不是直接cout
之前的示例代码就要改写为:
#include <iostream> //引入输入输出类库
// using namespace std; //不使用std的命名空间
// main() 是主程序,程序开始执行的地方
int main()
{
std::cout<<"Hello World"<<std::endl;
std::cout<<"Welcome to C++"<<std::endl;
// 终止 main( )函数,并向调用进程返回值 0。
return 0;
}
(3)程序入口
程序入口毋庸置疑,是启动程序后,有点调用了main()这个函数的味道。
int main()
规定了函数返回结果为整型,所以在程序最后有return 0;
作为程序的终止。
(4)操作符解读
运算符 | 说明 |
---|---|
:: | 范围解析用算符 |
<< | 输出流符号 |
>> | 输入流符号 |
如:cout<<"Hello World"<<endl;
的执行解读:
- cout是将流输出;
- 首先输出的是“Hello World”;
- 其次输出的是“endl”(即换行符\n);
另外值得强调的一点,代码是以英文分号作为结束的,漏写可是会报错的哦!
版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/104919575