【发布时间】:2018-12-16 01:13:42
【问题描述】:
在这个blog entry by Andrey Karpov entitled, "About size_t and ptrdiff_t"他展示了一个例子,
for (ptrdiff_t i = 0; i < n; i++)
a[i] = 0;
但是,我不确定这是否正确,似乎应该是
for (size_t i = 0; i < n; i++)
a[i] = 0;
这对吗?
我知道我们也应该使用memset 之类的东西,但让我们完全避免这种情况。我只是问类型
【问题讨论】:
-
ptrdiff_t是带符号的类型,所以如果你用它访问数组可能不是很安全。 -
取决于
n是什么以及a是什么。如果a是内置数组,size_t更合适。 -
不确定
container::size_type是什么,但这个问题是关于 C 的,而不是 C++。(猜猜那是 C++?) -
链接的文章完全是假的,充满了错误和误解。你当然是对的。忘掉那篇文章和写这篇文章的人吧。
-
在这种特殊情况下,
i的所有值都 >=0,因此 size_t 肯定更合适。
标签: c pointers size-t errata ptrdiff-t