C++学习日记(5)——框架里可能出现的其他语句

先来说cout

cout主要由三部分组成

cout<<“Hello, world!”<<endl;


cout是一个对象,你不需要了解这个对象里面有什么

就可以直接的去使用它(前面提到的头文件和对象的关系)

输出是一种流,在这里cout表示这种流


<<叫做插入运算符,可以把右侧的信息插入到流中

也就是把这句helloworld给输出出来


” “里面的部分是字符串


后面这个endl是一个控制符,他是可以被省略的

也就是说事实上用cout输出可以简化成下面这样

cout<<“字符串”;

endl表示重启一行(也就是换行)

像endl这样对cout有特殊含义的特殊符号

我们叫做控制符

和cout一样,endl被定义在iostream中

位于命名空间std


下面的表达都是正确的

但是没事还是老老实实写一块

写多了后面debug看着会烦的

  • cout<<“Hello”<<“world!”<<endl;

输出结果:Helloworld!

  • cout<<“Hello”;
  • cout<<“world!”;

输出结果:Helloworld!

  • cout<<“Hello”;
  •         <<“world!”;

输出结果:Helloworld!


换行符\n

cout<<“Hello, world.\n”;

事先学过C的同学会对\n觉得特别熟悉

因为在C中,printf函数就要使用\n来换行

\n这个整体被视为一个字符

他和endl的区别在于

endl能够立即显示下一句的内容

而\n不一定,在某些系统中可能会出问题

当然一般情况下是没啥区别的

C程序员可能会更喜欢\n的表达


cout和printf()

cout和printf相比的优点

可以识别类型的功能表明

是可扩展的(重新定义<<确保能识别新的数据类型)

(这里不理解也没关系,我现在也不是很理解)

后续会有更高级的cout表达效果

来达到和printf一样的精细控制

当然,两者都是可以使用的


2021.3.11补充部分

这篇更的比较早

在这里简短讲一下其他的输入和输出形式

在iostream这个头文件中除了cout和cin

还有clog和cerr这两个对象

clog(标准日志流)有缓存,缓存满后输出

cerr(标准错误流)非缓存,立即输出

在体量比较小的程序里面是看不出太大区别的(调用的内存不多)

但是体量大的程序里就有很大区别了(运行速度和需求上)


2021.3.11补充部分

关于上文讲的cout的可扩展性

输入输出流里同样也有很多函数

不过需要先包含头文件iomanip

具体函数的使用可参考这个

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    cout<<setiosflags(ios::left|ios::showpoint);  // 设左对齐,以一般实数方式显示
    cout.precision(5);       // 设置除小数点外有五位有效数字 
    cout<<123.456789<<endl;
    cout.width(10);          // 设置显示域宽10 
    cout.fill('*');          // 在显示区域空白处用*填充
    cout<<resetiosflags(ios::left);  // 清除状态左对齐
    cout<<setiosflags(ios::right);   // 设置右对齐
    cout<<123.456789<<endl;
    cout<<setiosflags(ios::left|ios::fixed);    // 设左对齐,以固定小数位显示
    cout.precision(3);    // 设置实数显示三位小数
    cout<<999.123456<<endl; 
    cout<<resetiosflags(ios::left|ios::fixed);  //清除状态左对齐和定点格式
    cout<<setiosflags(ios::left|ios::scientific);    //设置左对齐,以科学技术法显示 
    cout.precision(3);   //设置保留三位小数
    cout<<123.45678<<endl;
    return 0; 
}

来源:https://www.runoob.com/cplusplus/cpp-basic-input-output.html


cin是与cout相对应的输入的对象

但在讲cin之前我们得先来讲讲int

声明语句和变量

信息是被存储在计算机中的

你想要去调用信息,必须告诉计算机

我要把信息存在哪里,用多少空间

声明语句完成的就是这样的功能

int a;

int 指出了我存放信息需要的空间(被存储的数据类型)

a 把这部分空间命名为a(变量名)

整句句子的意思就是

我定义了一个变量a

这个变量是用来存储整数的

在C++里所有变量必须先声明

并且通常会把所有的声明放在程序的开头


为什么变量必须声明?

例如BASIC

假设我的变量名起的非常复杂

abc = 1

def = 2

ghi = abc + def

看起来没什么问题

但万一程序复杂起来

我某个变量名写错了

ghi = abb + def

IDE是不会报错的

因为他没有违反任何既定的规则

他会觉得abb这个变量是你新定的


赋值语句

a = 0;

这是一个简单的赋值语句,意思是把0赋值给a

要注意,赋值是从右向左开始的(注意我的表达,把….赋值给….)

所以我可以写a = b = c =0;

0这个值先给了c,c的值又给了b,b的值又给了a

a = b + 1;

b+1是一个算术表达式

b的值加上1后赋值给a

然后计算机把这个值存储到a对应的存储空间

int a = 0;

定义的同时进行赋值,这样的语句被称为变量的初始化


又要说回cout了

cout << a ;

这个语句表达的意思是输出a中存储的数值

并不是输出a,所以””有和没有区别是很大的


cin

现在我觉得先讲赋值会不会好一点。。

不过到这里cin很好理解了

cin >> a;

输入一个值,把这个值赋值给a

输入同样是一个流

信息从cin流向了a

要注意这里的符号则变成了>>

指示信息流的方向

发表评论

您的电子邮箱地址不会被公开。