在一个跨平台的C/C++项目中(Win32,Linux,OSX),我需要使用*printf函数来打印一些size_t类型的变量。 在某些环境中,size_t是8个字节,在其他环境中则为4个字节。 在glibc中,我可以使用%zd,在Win32中我可以使用%Id。 是否有一种优雅的方式来处理这个问题?
在标准 C++ 中是否有 size_t 的带符号变体?指的是与 size_t 完全相同的位大小,但是带符号。 当然我可以这样做: #include <type_traits> using signed_size_t = std::make_signed_t<std::si...
我将这里的代码翻译成了以下C++代码 #include <iostream> using namespace std; int t = 20; bool is_evenly_divisible(const int a, const int b) { for (int...
我需要从用户输入中获取一个数组大小。对我来说,将输入存储为 size_t 似乎是很自然的选择,但是当我寻找合适的 strto...() 函数时,却没有找到任何一个适用于 size_t 的函数。因此,我只好使用 strtoull(),因为 unsigned long long 至少保证具有 64...
我对C语言中的size_t感到困惑。我知道它是由sizeof运算符返回的。但它究竟是什么?它是一种数据类型吗? 假设我有一个for循环:for(i = 0; i < some_size; i++) 我应该使用int i;还是size_t i;?
C标准保证size_t是一种可以容纳任何数组索引的类型。这意味着,从逻辑上讲,size_t应该能够容纳任何指针类型。我在谷歌上找到了一些网站,上面写着这是合法的,或者应该总是起作用:void *v = malloc(10); size_t s = (size_t) v; 因此,在C99中,标准...
在64位系统上,sizeof(unsigned long) 取决于系统实现的数据模型,例如,在LLP64 (Windows)上它是4个字节,在LP64 (Linux等)上是8个字节。那么sizeof(size_t)应该是多少呢?它是否像sizeof(long)一样因数据模型而异?如果是,那么它...
有没有办法在不进行强制类型转换或产生编译器警告的情况下,给printf函数传递一个size_t类型的参数呢?(我总是会使用-Wall选项进行编译。)
size_t 声明为 unsigned int,因此它不能表示负值。因此有 ssize_t,它是 size_t 的 有符号 类型,对吗? 这是我的问题:#include <stdio.h> #include <sys/types.h> int main(){ size...
我曾是一名电气工程师,现在是一名计算机科学家。对我来说,在C ++中有许多东西几乎相同,但不完全相同,这让我很难理解。一个例子是 short 与 int vs unsigned int vs size_t vs long int vs long long int vs ui...