size_t是什么东东?

时间:2021-09-28 17:06:43
size_t类型是表示sizeof操作符执行结果的无符号整数类型。size_t类型的变量保证具有足够的精度,能够表示一个对象的长度。size_t类型的限制是由SIZE_MAX宏指定的。

------------------------------------------------------------------------------------------------------

问题:
1.size_t是数据类型?

2.“size_t类型是表示sizeof操作符执行结果的无符号整数类型。”
    这句话是什么意思?

3.“size_t类型的限制是由SIZE_MAX宏指定的”
     在哪个头文件的宏?

13 个解决方案

#1


《C安全编码标准》
 第5章 整数
 
 INT01-C 使用rsize_t或size_t类型表示所有表示对象长度的整数值

#2


该回复于2012-09-16 16:59:17被版主删除

#3


在你的 compiler 中找找

vs2010

 typedef unsigned __int64    size_t;
 typedef _W64 unsigned int   size_t;

#4


引用 3 楼  的回复:
在你的 compiler 中找找

vs2010

 typedef unsigned __int64    size_t;
 typedef _W64 unsigned int   size_t;


compiler是什么扩展名文件?

#5


引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译器.
这位的意思是,size_t并非原始的数据类型(如int, char等),而是由开发环境自己定义的类型,
所以你可以到开发环境的头文件里找到相应定义.

#6


size_t是无符号整形

#7


引用 5 楼  的回复:
引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译器.
这位的意思是,size_t并非原始的数据类型(如int,……


size_t是自定义类型?
为什么一定要用这个关键字?用其它不可以?

#8


引用 7 楼  的回复:
引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译器.
这位的意思是,size_……

这是考虑到可移植性,在不同的编译环境下,int的长度可能不一样,但size_t的长度却是一样的。

#9


引用 7 楼  的回复:
引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译器.
这位的意思是,size_……

另外,size_t不是关键字……

#10


引用 8 楼  的回复:
引用 7 楼  的回复:

引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译……


size_t是自定义类型,它可以是任何类型。当然长度也不一样了。
为什么你说是一样?

#11


引用 9 楼  的回复:
引用 7 楼  的回复:

引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译……


不是关键字是什么呢?

#12


引用 10 楼  的回复:
引用 8 楼  的回复:

引用 7 楼  的回复:

引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?
……

你理解错了,在下不是说size_t的长度不能变,只是C标准里定义的size_t是编译器无关的。在不同的编译器下size_t是一样的,而int长度则可以不同(你不去重定义size_t的前提下)。

#13


引用 11 楼  的回复:
引用 9 楼  的回复:

引用 7 楼  的回复:

引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?
……

size_t只是个类型名而非关键字。ANSI C定义的关键字就38个, 自己去查

#1


《C安全编码标准》
 第5章 整数
 
 INT01-C 使用rsize_t或size_t类型表示所有表示对象长度的整数值

#2


该回复于2012-09-16 16:59:17被版主删除

#3


在你的 compiler 中找找

vs2010

 typedef unsigned __int64    size_t;
 typedef _W64 unsigned int   size_t;

#4


引用 3 楼  的回复:
在你的 compiler 中找找

vs2010

 typedef unsigned __int64    size_t;
 typedef _W64 unsigned int   size_t;


compiler是什么扩展名文件?

#5


引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译器.
这位的意思是,size_t并非原始的数据类型(如int, char等),而是由开发环境自己定义的类型,
所以你可以到开发环境的头文件里找到相应定义.

#6


size_t是无符号整形

#7


引用 5 楼  的回复:
引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译器.
这位的意思是,size_t并非原始的数据类型(如int,……


size_t是自定义类型?
为什么一定要用这个关键字?用其它不可以?

#8


引用 7 楼  的回复:
引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译器.
这位的意思是,size_……

这是考虑到可移植性,在不同的编译环境下,int的长度可能不一样,但size_t的长度却是一样的。

#9


引用 7 楼  的回复:
引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译器.
这位的意思是,size_……

另外,size_t不是关键字……

#10


引用 8 楼  的回复:
引用 7 楼  的回复:

引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译……


size_t是自定义类型,它可以是任何类型。当然长度也不一样了。
为什么你说是一样?

#11


引用 9 楼  的回复:
引用 7 楼  的回复:

引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?


compiler是指编译……


不是关键字是什么呢?

#12


引用 10 楼  的回复:
引用 8 楼  的回复:

引用 7 楼  的回复:

引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?
……

你理解错了,在下不是说size_t的长度不能变,只是C标准里定义的size_t是编译器无关的。在不同的编译器下size_t是一样的,而int长度则可以不同(你不去重定义size_t的前提下)。

#13


引用 11 楼  的回复:
引用 9 楼  的回复:

引用 7 楼  的回复:

引用 5 楼  的回复:

引用 4 楼  的回复:
引用 3 楼 的回复:

在你的 compiler 中找找

vs2010

typedef unsigned __int64 size_t;
typedef _W64 unsigned int size_t;


compiler是什么扩展名文件?
……

size_t只是个类型名而非关键字。ANSI C定义的关键字就38个, 自己去查