相关疑难解决方法(0)

C++标准规定了int的大小,long类型是什么?

我正在寻找有关基本C++类型大小的详细信息.我知道这取决于架构(16位,32位,64位)和编译器.

但是有没有C++的标准?

我在32位架构上使用Visual Studio 2008.这是我得到的:

char  : 1 byte
short : 2 bytes
int   : 4 bytes
long  : 4 bytes
float : 4 bytes
double: 8 bytes
Run Code Online (Sandbox Code Playgroud)

我试图找到,但没有成功,可靠的信息,表述的大小char,short,int,long,double,float(和其他类型的我没想到的),在不同的体系结构和编译器.

c++ c++-faq

679
推荐指数
15
解决办法
120万
查看次数

什么是C中的size_t?

size_t在C中感到困惑.我知道它是由sizeof运营商返回的.但究竟是什么呢?它是数据类型吗?

假设我有一个for循环:

for(i = 0; i < some_size; i++)
Run Code Online (Sandbox Code Playgroud)

我应该使用int i;size_t i;

c int size-t

590
推荐指数
10
解决办法
68万
查看次数

如何使用printf系列便携地打印size_t变量?

我有一个类型的变量size_t,我想用它打印printf().我使用什么格式说明符来便携地打印它?

在32位机器上,%u似乎是对的.我编译了g++ -g -W -Wall -Werror -ansi -pedantic,并没有警告.但是当我在64位机器中编译该代码时,它会产生警告.

size_t x = <something>;
printf( "size = %u\n", x );

warning: format '%u' expects type 'unsigned int', 
    but argument 2 has type 'long unsigned int'
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,警告会消失,如果我将其更改为%lu.

问题是,如何编写代码,以便在32位和64位机器上编译警告?

编辑:作为一种解决方法,我想一个答案可能是将变量"转换"为一个足够大的整数,比如说unsigned long,并使用打印%lu.这在两种情况下都有效.我在寻找是否还有其他想法.

c printf

373
推荐指数
8
解决办法
27万
查看次数

size_t的最大大小

我知道C返回类型的sizeof运算符是size_t在中定义的无符号整数类型<stdint.h>.这意味着它的最大尺寸应该65535在规定作为C99标准7.18.3:

limit of size_t
  SIZE_MAX             65535
Run Code Online (Sandbox Code Playgroud)

但是在gcc-4.8.2头文件stdint.h中定义的大小远远大于标准中所述的与下面所示的65535相矛盾的大小C99,

/* Limit of `size_t' type.  */
# if __WORDSIZE == 64
#  define SIZE_MAX              (18446744073709551615UL)
# else
#  define SIZE_MAX              (4294967295U)
# endif
Run Code Online (Sandbox Code Playgroud)

请帮助我理解为什么在我的误解背后存在差异或原因.

c gcc sizeof c99 size-t

36
推荐指数
1
解决办法
5万
查看次数

将size_t转换为unsigned long int是否安全?

我需要一种可移植的方式来打印类型变量n的值size_t.由于我使用ANSI C89,我不能使用z长度修饰符.我目前的做法是将价值投射到long unsigned int:

printf("%lu\n", (long unsigned int) n);
Run Code Online (Sandbox Code Playgroud)

只要size_t被定义为unsigned int或者long unsigned int我看不出它会如何失败.演员安全吗?

c c89

12
推荐指数
1
解决办法
4716
查看次数

将 size_t 转换成 long,有什么缺点吗?

将 size_t 转换为 long 有什么缺点吗?因为,我正在编写一个在文件中维护 links_list 的程序。因此,我基于 size_t 遍历到另一个节点,并且还将列表总数记录为 size_t。因此,显然会有一些转换或添加 long 和 size_t。这有什么缺点吗?如果有的话,我会把所有东西都做的一样长,而不是 size_t,甚至是尺寸。请指教。

c++ sizeof size-t type-conversion long-integer

1
推荐指数
1
解决办法
6092
查看次数

标签 统计

c ×4

size-t ×3

c++ ×2

sizeof ×2

c++-faq ×1

c89 ×1

c99 ×1

gcc ×1

int ×1

long-integer ×1

printf ×1

type-conversion ×1