首页 > 编程语言 > 详细

C++ 进阶点的知识

时间:2021-03-04 18:59:21      阅读:30      评论:0      收藏:0      [点我收藏+]

1.在iostream头文件中除了经常使用的std::cout std::endl外其他也比较常用的函数

(1)std::cin用于从控制台读入数据

int x;

std::cin>>x;

std::cout<<x<<std::endl;

(2)std::cerr和std::clog

std::cerr用于输出警告和错误信息,和std::cout的区别是:它的输出内容是不缓存的,并且不能使用">"重定向输出到文件中

std::clog用于输出程序运行时的一般信息,用法和std::cout基本没有区别

 

2.在代码中我们用得比较多的是使用:执行程序 > 文件名的方式将原本应该输入到屏幕的数据重定向输入到一个我们指定的文件中

也可以使用: 执行程序 < 文件名的方式来将文件中的数据作为cin的输入读取到程序中哟。

 

3.std::cin的返回值

下面这个代码让用户一直输入一个整数并打印出来:

int x;
    while(std::cin>>x){
         std::cout<<x<<std::endl;
    }
这里使用了std::cin>>x表达式的值作为while的判断条件,那么std::cin>>x的返回值根据什么定义的呢?
>>输入运算符和<<输出运算符都是将其左侧运算对象作为计算结果,应该是一个istream的对象。
使用这个返回的istream对象作为while的条件时,效果就是监测流的状态如果是一个有效的流则为true,无效的输入或者遇到文件结束符时就为false,所以其实这里做了隐式转换。
当输入一个正常的整数时候就会让你继续输入,但是如果是一个字母时则while中判断为false跳出循环执行之后的代码。
或者遇到文件结束符时也为false,文件结束符在windows中是ctrl+z在liunx中是ctrl+d。
特别注意如果你输入是一个小数如1.5则程序会当做是多次输入第一次为1第二次为.第三次为5,这里在第二次时就会判断为false所以结果就是只打印一个1,并不是将1.5转换为了int类型的数据哟,同样的如果输入5a也是一样会打印出5

 

4.使用多行注释/**/的时候最好在每一行前面都加上*号如下:

/*this is a test

 *test add

 *test plus*/

 

5.类class和结构体struct的唯一区别就是,在书写其中的成员的时候如果最开始没有写任何的访问修饰符(public或者privite等),在clsss中默认时private,在struct中默认时public

 

6.在使用浮点数进行计算的时候尽量使用double,少使用float。因为float很可能会因为精度不够而导致数据丢失,而double双精度的运算速度和使用float单精度的运算速度相差无几。

 

7.在将一个小数隐式或者显示转化为一个int的时候并不是采取的四舍五入而是直接使用取整。如果想要使用四舍五入,可以使用std::round(double);,需要包含头文件#include <cmath>

 

8.在代码中如果将一个无符号类型的变量和一个有符号类型的变量进行运算的时候,机器会将这个有符号的变量类型隐式转化为无符号的。如果这个无符号的变量恰好是一个负数,那么计算的结果不可预期。

unsigned int x = 6;
    int y = -10;
    std::cout<<x +y<<std::endl;
 
9.我们把形如5、5.5、‘c’、0x14(十六进制)这样的值叫做字面值常量,每一个字面值常量对对应一个他们自己的数据类型,一般是长度能装下他们的该类型的最短类型。
可以给字面值常量加上一些特定的前缀或者后缀来显示的指定字面值常量的类型,如:54UL(表示54是一个unsigned long类型的无符号长整型),L‘a‘(表示‘a’是一个wchar_t类型的宽字符)

C++ 进阶点的知识

原文:https://www.cnblogs.com/maycpou/p/14481514.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!