C++primerPlus 学习第一天 第二章处理数据

对于有些程序,要让窗口一直打开,直到您按任何键,添加cin.get();

2.1.3 C++预处理器和iostream文件

    如果程序要使用C++输入或输出工具,请提供这样两行代码:

#include
using namespace std;

该编译指令导致预处理器将iostream文件的内容添加到程序中,io指的是输入和输出,将源代码文件和iostream组合成一个复合文件。

2.1.4 头文件名

像iostream这样的文件叫做包含文件(include file),也叫头文件(header file)。

不同于C的头文件名.h,C++的头文件没有扩展名,有些C头文件被转换为C++头文件,这些文件被重新命名,去掉了拓展名h,并在文件名称前面加上前缀c(例如:C++版本的math.h为cmath)

2.1.5 名称空间

using编译指令使得std名称空间中的所有名称都可用,这是一种偷懒的做法,在大型项目中是一个潜在的问题。更好的方法是,只使所需的名称可用,可以通过使用using声明来实现:
using std::cout;
using std::cin;
using std::std;
用这些编译指令之后,便可以使用cin和cout,而不必加上std::

2.3.3 类简介

类是用户定义的一种数据类型。类定义描述的是数据格式及其用法。而对象则是根据数据格式规范创建的实体

类描述了一种数据类型的全部属性(包括可以使用它执行的操作),对象是根据这些描述创建的实体。

sizeof介绍

sizeof运算符可以返回类型或变量的长度,单位为字节。
对于类型:sizeof(int )
对于变量: sizeof n_varibale; //也可以放在括号里

limits.h的使用

在头文件climits中包含了整型限制的信息

#include
#include
int main(){
int n = INT_MAX;
short x=SHRT_MAX;
long a=LONG_MAX;
long long q=LLONG_MAX;
//更多climits可百度
cfloat或float.h中有浮点数的限制
}

#define

//在climits文件中存在:
#define INT_MAX 32767

#define和#include一样,也是有一个预处理器编译指令。该编译指令告诉预处理器,在程序中查找INT_MAX,将所有的INT_MAX都替换为32767。
然而,如今C++基本使用const代替了#define,在c语言的老文件中还存在#define,同时,支持C与C++的头文件,都只能用#define

Const的优点:

  1. const可以明确指定数据类型, const int Months=12;
    2.const可以在函数中,可以根据作用域在不同模块中使用。
    3.const可以用于复杂类型,比如数组和结构体。

C++变量赋值

int a=5;
int a(5); //两种形式都可以

c++11版本

int a={5};
int a{5}; //省略=
int a{}; //括号中不写东西,默认初始化0

3.1.4 无符号类型

注意:unsigned是unsiged int的缩写。
C++的数据类型类型,如果超过最大值的范围,则直接回到最小值,反之亦然。 C++不保证数据类型越界会报错。

3.1.6进制表示

int a=2; //第一位是1-9 十进制
int a=02; //第一位是0,表示八进制
int a = 0x2 ; //表示16进制

C++提供了三个控制符控制cout输出进制的,dec、hex、oct
cout< cout<

3.1.7 C++确定常量的类型

4321 // 默认为int
4321L; //存储为long
4321UL和4321LU ; //存储为unsigned long
C++存储数据默认使用可以存储该数据的最小数据类型来存的。
比如int为16位,long为32位,20000为int,40000为long

通用字符名

C++可以输出特殊字符,键盘上没有的那种
输入\u或\U打头,后面则可以跟特殊字符。具体可以百度

wchar_t

这是一个16位的扩展字符集,支持更多的字符,对于底层类型的选择取决于实现,因此可能是unsigned shortLeix ,在另一个系统中也可能是int类型。
cin和cout的输入输出是char流,对于wchar_t需要wcin和wcout来完成输入与输出。加上前缀L来表示宽字符常量和宽字符串
wchar_t bob = L’p’; //输出
一个wchar_t类型的字符
wcout<

C++新特性,char16_t和char32_t,和wchar_t类似,具体百度

浮点数表示

2.52e+8; //2.52* 10000 0000
2.52E6; // 2.52*1 000 000
2.52E-6 ;// 2.52/1 000 000
上面的默认为double类型

1.234f
2.45e20F ; //这两种就是Float类型

3.4.4 数据类型转换

1.初始化和赋值进行转换
假设so_long变量的类型是long,thirty变量的类型是short:
so_long = thirty;
则将thirty的类型转换为Long,小范围的类型向大范围的类型转换会造成数据精度丢失!丢失是截取,而不是四舍五入!!
2、以{}的方式初始化时进行转换
char c1={3321}; //不允许,太长了,会截取
char c2 = {66}; //可以
3、表达式中的转换
short a=20;
short b=10;
short c= a+ b;
执行第三句代码时,c++会将a和b转换为int来计算,再将结果转换为short。
对于9.0/5,C++会将5转化为double。

当运算涉及到两种数据类型,默认将小的类型转化为大的数据类型进行运算,其实这也不全对,只是一般情况。实际上C++通过一个校验表来确定在算术运算表达式中的转换。具体百度。
4、强制函数转换
int a=10;
long(a) 或者(long)a 两种方式都可以转换,后者是C++新特性,像使用函数一样使用强制转换。

C++还提供了4个强制类型转换符,使用更为严格,比如static_cast (value); //convert value to typeName type.具体见第15章。

c++ auto声明

根据初始值的类型推断变量的类型
auto n=100; // n是int
auto x=1.5; //x是double

在处理标准模块库(STL)中的类型时,自动推断类型有时候才能显现出来,比如处理复杂数据类型时。具体百度

你可能感兴趣的:(c++,c++,学习,开发语言)