C++primer
第一章 : 开始
1.1 编写一个简单的C++程序
要点:每个函数有且只能拥有一个main函数,且main的默认返回是一个int类型。
函数定义:返回类型,函数名,形参列表,函数体
1.1.1编译 运行程序
程序源文件命名约定
无论使用命令行还是IDE(集成开发环境),都将代码存放在一个或多个文件中,这些文件就是源代码。
编译
在某个控制窗口中编译程序(winsdows命令行和linux命令行)
1.2 初识输入输出
iostream库:
istream:输入流
ostream:输出流
PS:一个流就是一个字符序列,是从IO设备读出或写入IO设备的。流(stream)表达的是,随着时间的推移,字符是顺序生成或消耗的。
标准输入输出
cin:标准输入
cout:标准输出
cerr和clog:标准错误
cout与cerr的区别:
1.cout:经过缓冲后输出,默认情况下是显示器。这是一个被缓冲的输出,是标准输出,并且可以重新定向
2.cerr不经过缓冲而直接输出,一般用于迅速输出出错信息,是标准错误,默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。一般情况下不被重定向
PS:缓冲区
实际代码例子
#include<iostream>//头文件,一般在main外部
using namespace std;//命名空间(namespace),通过使作用域运算符(::),来使用std空间的cout和cin
int main()
{
int a,b;
cout<<"Hello world"<<endl;//endl是操作符,作用是将与设备关联的缓冲区中的内容刷到设备中
cin>>a>>b;
cout<<"a*b="<<a*b;//多个语句能和成为一个语句
return 0;
}
向流中写入写出数据
“<<“(name:输出运算符):左侧的运算对象必须是ostream对象右侧对象为需要打印的值。它会将右侧的值给到ostream对象中。
“>>”(name:输入运算符):左侧的运算对象必须是istream对象右侧对象为需要输入的值。它会将istream对象的值给到右侧对象中。
WARNING
程序员在调试时常常添加打印语句。这一类语句应该保证“一直”刷新流。否则,如果程序崩溃,输出还可能留在缓冲区中,从而导致关于程序崩溃位置的错误判断。
1.3 注释简介
C++中的注释的种类
1.当行注释(//),以双斜线开始,换行符结束,这种注释可以包含任何文本内容和额外的数据双斜线
2.界定符对注释(/* */),可以包含除后界定符的任意内容注释界定符不能嵌套
/*
*注释对/* */不能嵌套
*不能嵌套四个字会被认为是源码,
*像剩余程序一样处理
*/
int main
{
return 0;
}
1.4 控制流
1.4.1 while语句
说明
while反复执行一段代码,直到给定条件为假
执行过程是交替检测condition和执行关联语句statement,直到condition为假
while(condition)
statement
实例
从1~100的整数总和(复合赋值运算符)
#include<iostream>
using namespace std;
int main()
{
int sum=0;
int i=0;
while(i<=100)
{
sum+=i;//使用了复合赋值运算符
++i;//前缀递增运算符
}
cout<<sum;
return 0;
}
1.4.2 for语句
说明
for循环与while循环相比,将检测变量 变量递增等进行了简化
for(init-statement;condition;expression)
principal
实例
从1~100的整数总和
#include<iostream>
using namespace std;
int main()
{
int sum=0;
for(int i=0;i<=100;i++)
sum+=i;
cout<<sum;
return 0;
}
1.4.3 读取数量不定的输入数据
当不知道需要对多少数进行操作是,可以使用istream对象作为条件配合循环
当istream对象作为条件时,其效果就是检测流的状态。如果流是有效的,即检测成功。当遇到文件检测符,或者遇到无效输出时,istream对象的状态变为无效,处于无效状态的istream的对象,条件判断为假。
PS:文件检测符
1.Windows Ctrl+Z 后按Enter或Return
2.Unix and Mac OS X Ctrl+D
实例
计算输入整数的和
#include<iostream>
using namespace std;
int main()
{
int sum=0;
int val=0;
while (cin>>val)
{
sum+=val;
}
cout<<sum;
return 0;
}
1.4.4 if语句
if语句用来支持条件执行
实例
统计输入中每个值连续出现了了多少次
#include<iostream>
using namespace std;
int main()
{
int currval=0,val=0;
if(cin>>currval)//读取第一个数
{
int cnt=1;//保存当前值的个数
while (cin>>val)//读取剩余的数
{
if(currval==val)
cnt++;
else
{
cout<<currval<<" occurs"<<cnt<<" times"<<endl;
currval=val;//记住新值
cnt=1;//重置计数器
}
}
cout<<currval<<" occurs"<<cnt<<" times"<<endl;//打印最后一个值的个数
}
return 0;
}
输入:
42 42 42 42 42 55 62 100 100 100
输出:
42 occurs5 times
55 occurs1 times
62 occurs1 times
100 occurs3 times
PS:运算符