【重学《C++Primer第四版》】第一章、快速入门
Details of knowledge
1.main()函数:操作系统通过main()函数返回的值来确定程序是否成功执行完毕,返回0值表示程序成功执行完毕,返回-1通常作为程序运行失败的指示器。
2.标准输入有cin,标准输出出了cout还有cerr和clog,具体介绍见Detailed description。
3.namespace为命名空间,有std,cv等。
4.推荐注释风格:在注释的每一行以星号开始,指明整个范围是多行注释的一部分。
Questionable Examples
习题1.2:main函数中return -1;时各编译器的处理:
VC6.0::没有指示任何错误。
DEVC++:控制台下输出Process exited with return value 4294967295
VS2012:程序已退出,返回值为 -1 (0xffffffff)
习题1.7:编辑有不正确嵌套的注释的程序。
</pre><pre name="code" class="cpp">/*
*注释对不可嵌套测试
*/
#include<iostream>
using namespace std;
int main()
{
/*eshrtj/*rgrjsrrjhrtjr*/erhrekk*/
return 0;
}
直接报错,不能运行,main函数中errhrekk*/这一段被当做source code
习题1.8: cout<<"/*"; 是合法的,/*被当做字符串处理。
cout<<"*/"; 是合法的,*/被当做字符串处理。
cout<</* "*/" */; 不合法, /* "*/直接就是注释对," */作为source code
Concrete Explanation
1.标准输出cerr:
cout对应于标准输出流,默认情况下是显示器。这是一个被缓冲的输出,可以被重定向。
cerr对应标准错误流,用于显示错误消息。默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。一般情况下不被重定向。
// test.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "hello world---cout" << endl ;
cerr << "hello world---cerr" << endl ;
return 0;
}
运行截图:
好像cout和cerr没什么区别,都只是输出了一下而已,现在我们就需要说一下使用cerr的原因了。
原因:在紧急情况下还可以用使用输出功能,比如内存使用殆尽等。
2.标准输出clog
clog - C++ Reference:
Object of class ostream that represents the standard logging stream oriented to narrow characters (of type char). It corresponds, along with cerr, to the C stream stderr
clog流对象也是标准错误流,它和cerr只有一个微小的区别:cerr是不经过缓冲区,直接向显示器上输出有关信息,而clog中的信息存放在缓冲区中,缓冲区满后或遇到endl时向显时器输出。