本章介绍C++的大部分基础内容:类型、变量、表达式、语句及函数。
1.开始
1.1编写一个简单的c++程序
1.1.1C++程序组成
1.1.2C++函数组成
如:
int main(){
return 0;
}
1.int为返回类型、main为函数名、()内为形参列表、{}内为函数体。
2.return语句包括一个值时,此返回值必须与函数的返回类型相同。
3.在大多数系统中,main的返回值被用来指示状态。返回值0表明成功,非0的返回值类型由系统定义,通常用来指出错误类型。
1.2初识输入输出
1.2.1iostream库
- C++未定义任何输入输出语句,取而代之,包含了一个全面的标准库来提供IO机制。
- iostream库包含两个基础类型istream和ostream,分别表示输入流和输出流。
- 所谓“流”(stream)想要表达的是,随着时间的推移,字符时顺序生成或消耗的。
1.2.2.标准输入输出对象
iostream标准库提供了4个IO对象:
- 标准输入istream类型对象cin
- 标准输出ostream对象cout
- ostream对象cerr和clog,cerr用来输出警告和错误信息,也被称为标准错误;clog用来输出程序运行时的一般性信息。
1.2.3一个使用IO库的程序
书店程序,将多条记录合并成单一的汇总记录。
#include<iostream>
int main(){
std::cout<<"Enter two numbers:"<<std::endl;
int v1=0,v2=0;
std::cin>>v1>>v2;
std::cout<<"The sum of"<<v1<<"and"<<v2
<<"is"<<v1+v2<<std:endl;
return 0;
}
开始时屏幕打印:Enter two numbers:
如果用户输入:3 7并回车
屏幕上打印输出: The sum of 3 and 7 is 10
#include告诉编译器我们想使用iostream库。<>内的名字指出了一个头文件,每一个使用标准库设施的程序都必须包含相关的头文件。
<<运算符接受两个运算对象:左侧的运算对象必须是一个ostream对象如cout,右侧的运算对象时要打印的值。计算结果是<<左侧的运算对象,即cout。
如:
(std::cout<<"Enter two numbers:")<<std::endl;
//(std::cout<<"Enter two numbers:")相当于cout
endl被称为操纵符。写入endl的效果是结束当前行,并将于设备关联的缓冲区(buffer)中的内容刷新到设备中。
程序员常常在调试时添加打印语句。这类语句应该一直保证一直刷新流。否则,如果程序崩溃,输出可能还停留在缓冲区中,从而导致关于程序崩溃位置的错误推断。
1.2.4使用标准库中的名字
1.3控制流
语句一般是顺序执行的:语句块的第一句语句首先执行,然后第二条语句执行,以此类推。但程序设计语言提供了多种不同的控制流语句,允许我们写出更为复杂的执行路径。
1.3.1while语句
格式:
while(condition){
statement;
}
//满足condition条件时,循环statement语句
1.3.2for语句
格式:
for(init-statement;condition;expression){
statement
}
//循环头包括:初始化函数init-statement、循环条件condition、表达式expression
例如:
int sum=0;
for(int val=1,val<=10;++val){
sum+=val;
}
//等价于while的代码
int sum=0;
int val=0;
while(val<=10){
sum+=val;
++val;
}
for循环的总体执行流程:
- 创建变量val,将其初始化为1
- 检测val是否小于等于10。若检测成功,执行for循环体。若失败,退出循环
- 将val的值增加1
- 重复第二步中的条件检测
1.3.3读取数量不定的输入数据
例:实现对用户输入的一组数求和。在这种情况下,我们预先不知道要对多少个数求和,这就需要不断读取数据直至没有新的输入为止:
#include<iostream>
int main(){
int sum=0,value=0;
while(std::cin>>value){
sum+=value;
}
std::cout<<"Sum is"<<sum<<std::endl;
return 0;
}
我们输入:
3 4 5 6 ^z 或 3 4 5 6 0.5
屏幕打印输出:
Sum is:18
1.while(std::cin>>value),while的循环条件就是执行表达式std::cin>>value。此表达式从标准输入读取下一个数,保存在value中,返回左侧对象cin。
2.当我们使用一个istream对象作为条件时,其效果是检测流的状态。==如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符(end-of-file)或遇到一个无效的输入时(例如读入的值不是一个整数),istream对象的状态就会变成无效。处于无效状态的istream对象会使条件变为假。
|