版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25458977/article/details/82862501
size_t一般用来表示一种计数,比如有多少东西被拷贝等,例如sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小。他的意义大致是: 适于计量内存中可容纳的数据项目个数的无符号整型类型。
因此,它表示的是0-MAXINT的范围;
typedef unsigned int size_t; 32位系统
typedef unsigned long size_t; 64位系统
具体如下:
// Definitions of common types
#ifdef _WIN64
typedef unsigned __int64 size_t;
typedef __int64 ptrdiff_t;
typedef __int64 intptr_t;
#else
typedef unsigned int size_t;
typedef int ptrdiff_t;
typedef int intptr_t;
#endif
我的使用代码如下:
for(size_t i=0;i<binary_image.rows;i++)
{
for(size_t j=0;j<binary_image.cols;j++)
{
int tl_x = MAX(i-12,0);
}
}
该程序返回 tl_x的值为-12,这是因为i是无符号整型,i-12依然是无符号整型, 而 0 是有符号整型,两者比较是会先将无符号整型转变为有符号整型,而-12转换为有符号整型为4294967306(应该是=_=!)
因此会返回-12;
同样会出现这种状况的是:
strlen()函数 strlen("Demon") 返回size_t