固定宽度的整数

来源:互联网 发布:知乎用户人数 编辑:程序博客网 时间:2024/05/11 15:35

你记得2.4节的最大整数,整数型C + + 03的定义是“长”。长有一个,可以是32或64位平台的具体尺寸。C++定义了一个新的类型命名的长长的保证是至少64位长。因为“”已经介绍了C99许多编译器已经支持的C + + 11之前

奇怪的是尽管C++ 11进口很久C99他们选择不进口固定宽度的整数

随着汽车和decltype类型推理

在C + + 11我最喜欢的变化是自动关键词引言。考虑你要遍历一个向量循环的使用普通的使用情况

1

std:向量< int >const_iterator ITR = myvector cbegin()ITR=myvector cend()+ + ITR)

具有确定迭代器序列数据类型是std:矢量const_iterator是一个痛苦的人正确的和令人厌恶的考虑编译器已经知道cbegin()返回类型是std:向量const_iterator -但它使

这是自动关键字哪里

1

汽车ITR = myvector cbegin()ITR= myvector cend()+ + ITR)

自动关键词告诉编译器对初始化变量的类型推断

1

2

3

4

汽车X = 5// X将int类型

汽车Y=5.5/Y型双

自动Z = Y / Z型双

汽车W =“嗨”/W类型const char *

decltype可以用来确定一个表达式的类型在编译

1

2

3

decltype(5x/ / xint类型,因为5是int

decltype(xy=6/Yint类型,因为X是一个int

自动Z = x/ Zint类型

虽然看起来像汽车decltype总是推断类型相同,事实并非如此下面的示例

1

2

3

const std:矢量< in> V(5//声明一个向量V

汽车= V [ 0 ]//int类型,因为V [ 0 ]一个int

decltype(V [ 0 ]B = 1// B将类型const int这是标准的返回类型:> <整数向量算子[ ]size_typeconst

一般来说,如果你需要一个变量,你要初始化式,使用自动。decltype更好当你需要的东西是不是一个变量的类型像一个返回类型

nullptr

在CC++以前的迭代0作为常量整数作为空指针常量这就是为什么下面的怪事发生

1

2

int p = 1//非法不能将int int *变量

int * q = 0//法律0有着特殊的意义作为一个空指针

C + + 11定义了一个新的保留标识符被称为nullptr(类型nullptr_t)不是整数,不能转换为整数(但奇怪的是,它可以被转换为布尔值false)。0保持向后兼容的目的,一个有效的零点常数

枚举类型

注:以下是尚未通过Visual Studio 2010的支持它足够简单跟随甚至没有尝试的例子自己)

在C + + 03,枚举类型安全的-他们不被视为整数,即使当枚举类型是不同的。考虑以下情况


0 0
原创粉丝点击