33得票10回答
跨平台的格式化字符串如何处理size_t类型的变量?

在一个跨平台的C/C++项目中(Win32,Linux,OSX),我需要使用*printf函数来打印一些size_t类型的变量。 在某些环境中,size_t是8个字节,在其他环境中则为4个字节。 在glibc中,我可以使用%zd,在Win32中我可以使用%Id。 是否有一种优雅的方式来处理这个问题?

7得票1回答
C++标准库中的有符号size_t变量

在标准 C++ 中是否有 size_t 的带符号变体?指的是与 size_t 完全相同的位大小,但是带符号。 当然我可以这样做: #include <type_traits> using signed_size_t = std::make_signed_t<std::si...

11得票2回答
C++中size_t的性能表现

我将这里的代码翻译成了以下C++代码 #include <iostream> using namespace std; int t = 20; bool is_evenly_divisible(const int a, const int b) { for (int...

11得票3回答
如何从字符串中获取size_t?

我需要从用户输入中获取一个数组大小。对我来说,将输入存储为 size_t 似乎是很自然的选择,但是当我寻找合适的 strto...() 函数时,却没有找到任何一个适用于 size_t 的函数。因此,我只好使用 strtoull(),因为 unsigned long long 至少保证具有 64...

808得票15回答
在C语言中,size_t是什么?

我对C语言中的size_t感到困惑。我知道它是由sizeof运算符返回的。但它究竟是什么?它是一种数据类型吗? 假设我有一个for循环:for(i = 0; i < some_size; i++) 我应该使用int i;还是size_t i;?

271得票8回答
size_t与uintptr_t的区别

C标准保证size_t是一种可以容纳任何数组索引的类型。这意味着,从逻辑上讲,size_t应该能够容纳任何指针类型。我在谷歌上找到了一些网站,上面写着这是合法的,或者应该总是起作用:void *v = malloc(10); size_t s = (size_t) v; 因此,在C99中,标准...

64得票4回答
32位和各种64位数据模型中,size_t的大小是多少?

在64位系统上,sizeof(unsigned long) 取决于系统实现的数据模型,例如,在LLP64 (Windows)上它是4个字节,在LP64 (Linux等)上是8个字节。那么sizeof(size_t)应该是多少呢?它是否像sizeof(long)一样因数据模型而异?如果是,那么它...

16得票1回答
size_t的printf函数

有没有办法在不进行强制类型转换或产生编译器警告的情况下,给printf函数传递一个size_t类型的参数呢?(我总是会使用-Wall选项进行编译。)

14得票4回答
C语言中的size_t和ssize_t类型如何表示负数值?

size_t 声明为 unsigned int,因此它不能表示负值。因此有 ssize_t,它是 size_t 的 有符号 类型,对吗? 这是我的问题:#include <stdio.h> #include <sys/types.h> int main(){ size...

9得票2回答
为什么C/C++中存在size_t,它是否应该被替换?

我曾是一名电气工程师,现在是一名计算机科学家。对我来说,在C ++中有许多东西几乎相同,但不完全相同,这让我很难理解。一个例子是 short 与 int vs unsigned int vs size_t vs long int vs long long int vs ui...