如何知道没有sizeof的int的大小

时间:2011-06-17 11:07:40

标签: c

  

可能重复:
  size of a datatype without using sizeof

这是在C采访中提出的问题我想知道这个

的正确逻辑是什么

如果您在C中没有sizeof运算符,您将如何了解 int的大小?

4 个答案:

答案 0 :(得分:10)

使用数组[*]:

int a[2];
int sizeof_int = (char*)(a+1) - (char*)(a);

实际上,由于有关指针算术的部分中的注释,您甚至不需要数组,因为出于指针算术的目的,对象的行为类似于大小为1的数组,以及一个非正式的指针对于数组来说是合法的:

int a;
int sizeof_int = (char*)((&a)+1) - (char*)(&a);

[*]我的意思是“解决问题的方法是使用数组”。实际上不使用数组,请使用sizeof

答案 1 :(得分:0)

一种方法是计算两个连续int变量之间的地址差异。

答案 2 :(得分:0)

我想到两种方式。一种是打印'-1'作为无符号值,并根据打印的数字推断出尺寸。其次是:

#include <stdio.h>

int size()
{
  int a = 1;
  int size = 1;
  while(a<<=1)
    size++;
  return size;
}

int main(int argc, char** argv)
{
  printf("Size of int: %d\n", size());
  return 0;  
} 

答案 3 :(得分:0)

声明int,将其初始化为-1。重复'&lt;&lt;&lt; 1'直到它为0.需要的移位数=以位为单位的大小。 '&lt;&lt;&lt; 3&gt;以大小为单位。

RGDS, 马丁