正式开始:第1章思考总结_1(C++Primer阅读笔记)

一切还是从最初的Hello World程序开始

虽然是讲Hello World,但既然是自己的笔记,就不会像新手教程那样详解,这里只就几个值得注意的地方说一说

先贴上C++版Hello World的代码

#include<iostream>
int main(void)
{
	
	cout << "Hello World!" << endl;
	return 0;
}

1.从预编译开始
#include<iostream>

一切从开头开始,对于放在最开头的#include,“#”是C,与C++中的预编译标识符,所谓预编译,就是在编译器在对整个程序进行编译之前做的事情。对于#include,他的操作是将include所对应的文件,整个拷贝过来,而对于#define宏定义,操作则是将宏定义标识在涉及到的文件中进行替换。

打个比方来说:比如你是一个机械师你要完成一个成品,你需要做的是画图纸,以及做一些特殊零件,而有的通用零件可以写下清单,等到要完成成品的时候再去对应的供应商那里拿对应的零件。“#”对应的预编译内容就如同你写下的清单,在进行制作之前,你先要拿到那些通用零件才能进行下一步的操作。

2.关于main函数返回值
int main(void)
这里main函数的写法我采用无参数的写法,因为我不知道int argc, _TCHAR* argv[]对我的程序有什么用处,如果有人觉得写成有参数的形式有什么优点的话,欢迎在评论区指出,大家互相学习。
下面说说int类型的这个返回值吧,学过C的人都应该知道返回值return 0,return -1,return 2之类返回值的区别,除了0是正常退出,其他两个都是异常情况,这些异常返回值是我们的程序返回给系统的,我们常常并不能看到直接可视的报错,特别是在使用IDE编译运行程序的时候。如果想直观的知道程序确实是在异常退出,可以在控制台输(windows系统)入这样的指令:
>test.exe&&dir
test.exe是编写的程序,&&是在前一个指令运行正常的情况下执行后一个指令,最后的输出结果是:
可以看得出并没有打印出当前目录
3.关于io流
cout是C++的输出流对象,<<原本是位移操作符,但是根据C++运算符可以重载的特性,<<对于ostream这个左值被重载为了输出流运算符,意思是将<<运算符的右值送入cout的缓冲区中,再在某个时刻将缓冲区中的数据打印到屏幕上,这里的谋个时刻笔者也不知道具体是什么时刻,因为在我做的测试中基本每次都是在cout语句结束时直接输出到屏幕,但也不能武断的认为cout就是在语句结束时刷新缓冲区,因为在某些反复循环输出的情况下它还是会将内容保存在缓冲去,但是笔者没有找到这种情况。
上面讲的cout是指在不带endl的情况下,但是如果带了endl结尾,那么情况就要明了得多,endl的操作是打印出当前缓冲区中所有内容,并换行。由于endl的明了性,对于它的使用显得十分必要,而在书上(PS:现在才说到与书相关的事,这还是读书笔记吗?)WARING中有提到,我们应该经常使用endl,以防在程序崩溃时因为缓冲区还有残留找不到正确的出错点(page 6 : WARING)。
ostream还有cerr和clog这两个对象,相对于clog,cerr更常用一些,他们与cout的不同就在于没有缓冲,会直接输出流入的信息。
对于istream,它则有一个cin对象,istream重载了>>左移运算符,他可以接收键盘输入,并通过>>将输入输出给右值。一般是从第一个非空(空格)字符读入,读到下一个空字符为止,如果下面代码:
cin>>str;
接收到的是Hello World的输入,str只会得到Hello;
若要读取一行,需要使用cin的getline方法


这一整个读书笔记的开篇,但是好像没怎么提到书上内容。主要是因为书上关于第一个程序的讲解太过基础,所以就选择阐述自己的想法。
对于本博客,如果觉得有什么不对的地方,欢迎大家指出交流。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值