每个程序员的Hello World程序
//This is a small c++ program #include <iostream> int main() { std::cout << "Hello, World" << std::endl; system("pause"); return 0; }
1.注释
符号//开始,到行末都是注释。编译器忽略注释。写注释的原因是:告诉程序相关信息,方便理解。
2.#include
在c++中,有很多基础设施(编写好的类和方法)。例如输入和输出函数,都是标准库的一部分,而不是c++语言的一部分。c++语言随时可以使用,但是要使用标准库的方法,就得告诉编译器。#include<>。 <>之间的被称为标准头文件。标准库如何实现,我们不关心,我们只需要告诉编译器要使用标准库,#include导入头文件,就可以使用标准库中的类和方法了。
3.main 函数
函数: 返回值 函数名 (参数)
main()函数是程序的入口,所有c++程序都调用这个函数。
4.{}
{}之间的是函数的函数体
int main() { // left brace // the statements go here. } // right brace
5.使用标准库输出
std::cout << "Hello, World" << std::endl;
std 命名空间名称。为什么要有命名空间? 如果你有3个名称是一样的函数 show()。 sld::show() std::show() sfd::show() 表示3个命名空间中的不同函数,这样就不容易混淆。
cout 标准库中的一个类。 cout重载了 << 操作符。 << 之后""之间的语句被传送到标准输出流中。
endl 标准库中的一个类。std::endl表示换行。
6.返回值
return 0;
return语句表示当前函数结束。return返回值的类型必须和函数返回值的类型兼容,否则程序会报错。
7.深度思考
该程序使用两个的概念,涵盖C ++编程:表达式和范围。
一个表达式要求程序来计算某些东西。 计算产生一个结果,也可能产生一些效果(效果影响程序的状态)。
3+4
表达式3+4,计算出一个结果7,没有产生额外的效果。
std::cout << "Hello, world!" << std::endl
表达式 std::cout << "Hello, world!" << std::endl 没有计算结果,但是改变了程序的状态,窗口显示 Hello, world!
一个表达式包含运算符和运算数。
在Hello World例子中,std::cout、"Hello, world!"、std::endl都是运算数, 两个<<都是运算符。
运算数都有自己的类型。类型表示数据结构和对该数据结构有意义的操作的含义。
类型通常有名字。例如,c++将int定义为表示整数的类型的名称,并且库将std :: ostream定义为提供基于流的输出的类型。在我们的程序中,std :: cout类型为std :: ostream。
<<运算符需要两个操作数,但是我们写了两个<<运算符和三个操作数。
<<运算符的优先级,从左到右。所以先执行 std::cout << "Hello, world!"。执行返回的结果也是std::cout类型。 第二次 <<运算,实际上是 返回的std::cout << std::endl
范围: 这个例子中我们看到 2个范围,命名空间和函数体{}。临时变量只在声明它的范围中有效。
8.课后习题
1)编译Hello World程序。
#include <iostream> int main() { std::cout << "Hello, World" << std::endl; system("pause"); return 0; }
2)表达式3+4产生什么结果?
计算值7,对程序状态没有影响。
3)编译输出
This (") is a quote, and this () is a backslash.
#include <iostream> int main() { std::cout << "This (") is a quote, and this (\) is a backslash." << std::endl; system("pause"); return 0; }
4)重写Hello,World! 程序,以便在程序中出现空格的地方发生换行。
#include <iostream> #include <cstdio> int main() { char c; while( (c = std::getchar()) != 'r') { if(c == ' ') std::cout << std::endl; else std::putchar(c); } system("pause"); return 0; }