1.15 简单程序
C++使用非程序员可能感到奇怪的符号。我们首先介绍一个简单程序:打印一行文本。程序及其屏输出如图1.2。
这段程序演示了C++语言的几个重要特性。我们详细介绍程序的每一行。
// Fig.1.2:fig1_02.cpp // A first program in
C++ 以//开头,表示该选项其余部分是注释语句(comment)。程序员手稿注释语句用来说明和提高程序的可读性。注释语句还可以帮助其它人阅读和理解程序。在运行程序时注释语句并不使计算机采用任何操作。C++编译器忽略注释误句,不产生任何机器目标码。注释语句"first program in C++"只是描述该程序的用途。以//开头的说明语句称为单行貹注释语句(singned-line comment),因为该注释语句在行尾结束(注意:C++程序员也可以用C语言注释语句样式,即注释语句以/*开头,以*/结束)。
// Fig. 1.2:fig01_02.cpp // A first program in C++ #include<iostream.h> int main(){ cout<<"Welcom to C++!\n"; rerturn 0; // indicate that program ended sucessfully }
输出结果:
Welcom to C++!
编程技巧1.4
每段程序以注释语句开头,描述该语句的用途。
下列语句:
#include<iostream.h>
是条预处理指令(preprocessor directive),是发给C++预处理器的消息。预处理器先处理以#开头的一行语句之后再编译该程序。为一行预处理指令告诉预处理器要在程序中包括输入、输出泫头文件iostream.h的内容。应该在任何使用C++式输入、输出泫从键盘输入数据或向屏幕输出数据的程序中包括这个头文件。图1.2中的程序向屏幕输出数据,iostream.h的内容将在稍后详细介绍。注意,最新ANSI、ISO C++杂标准实际上指定iostream.h和其它标准头文件不需要后缀.h,如iostream。我们在本书余下部分继续使用旧式头文件,因为许多编译器还不支持最新的ANSI/ISO
C++草案标准。1.20节将再次介绍这个例子,演示如何使用新式头文件。
常见编程错误1.2
如果从键盘输入数据或向屏幕输出数据的程序中没有包括iostream.h头文件,则编译器会发出一个错误信息。
下列语句:
int main()
是每个C++程序都包的语句。main后面的括号表示main是个程序基本组件,称为函数(function)。C++程序包含一个或几个函数,其中有且只有一个main函数即使main不是程序中的第一个函数,C++程序通常都从main函数开始执行。main左边的关键字int表示main返回一个整数值。我们将在第3章深入介绍函数时再介绍返回值的含义。目前只要在每个程序的main函数的左边包括关键字int即可。
左花括号({)应放在每个函数体(body)开头,对应右花括号(})应放在每个函数的结尾。下列语句:
cout<<"Welcom to C++!\n";
让计算机在屏幕上打印引号之间的字符串(string)。
整个行称为语句(statement),包括cout<<运算符、字衔串"Welcom to C++!\n"和分号(;)。每条语句应以分号(又称为语句终止符)结束。C++中的输出和输入是用字符流(stream)完成的,这样,执行上述语句时,将字符流"Welcom to C++!"发送到标准输出流对象(standard output stream object)cout,通常cout将其输出到屏幕。第11章“C++输入/输出流”中将详细介绍cout。
运算符<<称为流插入符(strem insertion operator)。执行这个程序时,运算符右边的值(历操作数)插入输出流中。历操作数通常按引号中的原样直接打印。但注意字符\n不在屏幕中打印。反斜杠(\)称为转义符(escap character),表示要输出特殊字符。字符串中遇到反斜杠时,下一个字符与反斜杠组合,形成转义序列(escape sequence)。转义序列\n表示换行符(newline)。使光标(即当前屏幕位置的指示符)移到下一行开头。表1.3列出了常用转义序列。
常见编程错误1.3
省略语句末尾的分号是个语法错误,语法错误编译器无法识别一个语句。编译器通常会发出错误消息,帮助程序员找到和纠正错误 。语法错误即违反了语言规则。语法错误也称为编译错误,因为它们在编译阶段出现。
下列语句:
return 0; // indicate that program ended sucessfully
放在每个main函数的末尾。C++的关键字return 是退出函数的几种方式之一。main函数末尾使用return语句时,数值0表示顺利结束。第3章将详细介绍和解释包括这个语句的原因。目前只要记住在每个程序中都要包括这个语句。否则在某些程序中编译器会产生警告消息。
右花括号(})表示main函数结束。
转义序列 | 说明 |
---|---|
\n | 换行符,使屏幕光标移到屏幕中下一行开头 |
\t | 水平制表符,使屏幕光标移到下一制表位 |
\r | 回车符,使屏幕光标移到当前行开头,不移到下一行 |
\a | 警告,发出系统警告声音 |
\\ | 反斜杠,打印反斜杠符 |
\" | 双引号,打印双引号 |
编程技巧1.5
许多程序员让函数打印的最后一个字符为换行符(\n)。这样可以保证函数使屏幕光标移到屏幕中下一行开头,这种习惯能促进软件复用,这是软件开发环境中的关键目标。
编程技巧1.6
将每个函数的整个函数体在定义函数体的花括号中缩排一级,可使程序的函数结构更明显.使程序更易读。
编程技巧1.7
确定一个喜欢的缩排长度,然后一直坚持这个缩排长度。可以用制表符生成缩排,但制表位可能改变。建议用1/4英寸制表位或三个空格的缩排长度。
"Welcom to C++!"可用多种方法打印。例如,图1.4的程序用多条流插入语句,产生的程序输出与图1.2相同,因为每条流插人语句在上一条语句停止的位置开始打印。第一个流插入语句打印“Welcome”和空格,第二条流插入语句打印同一行空格后面的内容。C++允许以多种方式表达语句。
一条语句也可以用换行符打印多行,如图1.5。每次在输出流中遇到\n转义序列时,屏幕光标穆到下一行开头。要在输出中得到空行,只要将两个\n放在一起即可,如图1.5。
// Fig. 1.4:fig01_04.cpp // printing a line with multple statements #include<iostream.h> int main() { cout<<"Welcom "; cout<<"to C++!\n"; return 0; }
输出结果:
Welcom to C++!
图 1.4 用多条流插入语句打印一行
// Fig.1.5:fig01_05.cpp // printing multiple lines with a single statement #include<iostream.h> int main(){ cout<<"Welcom\nto\n\nC++!\n"; return 0; // indicate that program ended sucessfully }
输出结果:
Welcome to C++!
图1.5 用一条流插入语句打印多行