赞
踩
\n
与 endl
的区别是什么?\n
表示内容为一个回车符的字符串。std::endl
是流操作子,输出的作用和输出 \n
类似,但可能略有区别。
std::endl
输出一个换行符,并立即刷新缓冲区。
例如:
std::cout << std::endl;
相当于:
std::cout << '\n' << std::flush;
// 或者
std::cout << '\n'; std::fflush(stdout);
对于有输出缓冲的流(例如cout
、clog
),如果不手动进行缓冲区刷新操作,将在缓冲区满后自动刷新输出。不过对于 cout
来说(相对于文件输出流等),缓冲一般体现得并不明显。但是必要情况下使用 endl
代替 \n
一般是个好习惯。
对于无缓冲的流(例如标准错误输出流cerr
),刷新是不必要的,可以直接使用 \n
。
.cpp
以及 .h
文件的作用?.h
中存放类的声明,函数原型(放在类的声明中)。
.cpp
存放函数体。
也就是说,一个存放声明(declaration),一个存放定义(definition)。
如果我们在一个头文件里声明了一个函数,当我们需要定义这个函数(这个定义是唯一的,也就是只能定义一次),或者需要使用这个函数时,我们在 .cpp
中需要 include 这个头文件。
同样地,如果我们在一个头文件里声明了一个类,当我们需要定义类里的成员函数,或者我们需要使用这个类时,我们在 .cpp
中需要 include 这个头文件。
对于类的设计者来说,头文件就像他们和类的使用者的一个合同,编译器会强化这一合同,它会要求你在使用这些类里的函数或结构时必须要声明。
<>
以及" "
区别?<>
先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h
、stdlib.h
等用这个方法。
" "
首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于 include 自定义的头文件,让系统优先使用当前目录中定义的。
"\n"
以及 '\n'
区别?"\n"
表示一个字符串,只有一个数据是回车符。
'\n'
表示一个字符。
这两个在输出上是一样的。
using namespace std;
?真正的开发过程中, 尽量避免使用 using namespace std;
等直接引入整个命名空间,否则会因为命名空间污染导致很多不必要的问题, 比如自己写的某个函数,名称正好和 std
中的一样, 编译器会不知道使用哪一个, 引起编译报错, 建议使用:
std::cout << "Hello World" << std::endl;
等直接由命名空间组合起来的全称。
对于C++字符串的输入我们看一下下面这段代码:
string s; //定义空字符串
cin >> s; //输入字符串
cout << s; //打印
但我们会发现如果我们输入了还有空格
的字符串,s里读入的字符串遇到空格
,回车
,tab
都会结束,比如我们输入123 888
,但实际输入到s里的只是123
。可以使用getline(cin, s)
或者字符串拼接函数当然也可以使用字符串拼接函数。
如下:
string inputStr;
getline(cin, inputStr);
cout << inputStr;
https://blog.csdn.net/love_gaohz/article/details/7517891
main
函数的返回值是返回给主调进程,使主调进程得知被调用程序的运行结果。
标准规范中规定 main
函数的返回值为 int
,一般约定返回 0 值时代表程序运行无错误,其它值均为错误号,但该约定并非强制。
如果程序的运行结果不需要返回给主调进程,或程序开发人员确认该状态并不重要,比如所有出错信息均在程序中有明确提示的情况下,可以不写 main
函数的返回值。在一些检查不是很严格的编译器中,比如 VC, VS 等,void 类型的 main
是允许的。不过在一些检查严格的编译器下,比如 g++, 则要求 main 函数的返回值必须为int
型。
所以在编程时,区分程序运行结果并以 int 型返回,是一个良好的编程习惯。
int main(void)
指的是此函数的参数为空,不能传入参数,如果你传入参数,就会出错。
int main()
表示可以传入参数。
// 这样是正确的
int main()
{
if (0) main(42);
}
// 这样会出错
int main(void)
{
if (0) main(42);
}
在 C++ 中int main()
和 int main(void)
是等效的,但在 C 中让括号空着代表编译器对是否接受参数保持沉默。在 C 语言中main()
省略返回类型也就相当说明返回类型为 int
型,不过这种用法在 C++ 中逐渐被淘汰。虽然 void main()
在很多系统都适用,但他毕竟不是标准的,所以应该避免这种用法, 应该使用这种int main(void)
的写法比较妥当。
在注释的时候使用 /* */
的时候,是不支持嵌套注释的,如下
/*one /* two */*/
其输出就是*/
, 会在第一个*/
结束注释。
对此,我们可以使用#if 0 ... #endif
来实现注释,具体实例如下:
#if 0
code
#endif
你可以把#if 0
改成#if 1
来执行 code 的代码。
这种形式对程序调试也可以帮助,测试时使用 #if 1
来执行测试代码,发布后使用 #if 0
来屏蔽测试代码。
#if
后可以是任意的条件语句。
下面的代码如果 condition
条件为 true
执行 code1 ,否则执行 code2。
#if 1
cout << "OCMMENT STEP 1" << endl;
#if 1
cout << "COMMENT STEP 1_1" << endl;
#else
cout << "COMMENT STEP 1_2" << endl;
#endif
#else
cout << "COMMENT STEP 2" << endl;
#endif
输出:
OCMMENT STEP 1
COMMENT STEP 1_1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。