233.C++的size_type是什么数据类型?

Posted 每天一个开发小知识

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了233.C++的size_type是什么数据类型?相关的知识,希望对你有一定的参考价值。

每天一个开发小知识


开局一段代码


vector<int> vec = {1, 2};cout << (vec.size() - 3);


你认为它的输出结果是多少?


是 -1 吗?


不是!


因为


vec.size() 的数据类型为 size_type


size_type 一般被定义为 unsigned int 或者 unsigned long long


所以


vec.size() - 3 的结果为一个无符号整数


在64位系统中


-1 转换成 unsigned long long 后为 18446744073709551615


因此


vec.size() - 3 的输出结果为 18446744073709551615


而不是 -1


总结


自己之前编码丝毫不在意 vec.size() 的数据类型


今后得注意了:


size_type 为一个无符号整数


每天一个开发小知识,今天你学废了吗?

以上是关于233.C++的size_type是什么数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

size_t和size_type

size_t 和 size_type的区别

string::size_type 页73 size_t 页90

size_t, ptrdiff_t, size_type, difference_type

std::size_t 与 size_type 作为参数和函数返回类型

C++ string::size_type 类型以及由此引发的思考