1

嗨,我是 C 编程的新手,谁能告诉我这行代码会做什么:

i = (sizeof (X) / sizeof (int))

当代码接受 bdata 的值并将其与不同的情况进行比较时,该代码实际上与 case 语句一起使用。

4

5 回答 5

4

通常,这样的语句用于计算数组中的元素个数。

让我们考虑一个整数数组,如下所示:

int a[4];

现在,sizeof(a)完成后它将返回4*4 = 16大小。4 个元素,每个元素为 4 个字节。

所以,当你这样做时sizeof(a) / sizeof(int),你会得到 4 ,这是数组的长度或大小。

于 2012-08-03T10:45:17.910 回答
3

它计算intnamed数组的元素数X

于 2012-08-03T10:30:20.337 回答
1

返回数组 X 的长度

于 2012-08-03T10:30:51.640 回答
0

它计算 X 在内存中的体积除以计算机中整数的大小(2 字节或 4 字节)。如果 i 是整数,则它是整数除法。如果它是浮点数并且 X 没有偶数,则它是真正的除法。

int 大小可以改变。X 取决于实现。除法结果取决于 i 的类型。

所有这些意味着,它计算有多少 int 适合 X。

于 2012-08-03T10:33:09.503 回答
0

除了常见的实践或个人经验,没有理由认为这会i = (sizeof (X) / sizeof (int))计算数组 X 的大小。大多数情况下可能是这种情况,但理论上 X 可以是任何类型,因此给定的表达式将计算大小的比率你的 var X 和一个 int (你的 X var 相对于一个 int 占用了多少内存,以字节为单位)

此外,如果 X 是指向数组的指针(float* X,在 C 中声明数组的另一种方式),则此表达式在 32 位架构上的计算结果为 1。指针是 4 个字节,int 也是 4 个字节 =>i = sizeof(X) / sizeof(int) (=1)

于 2012-08-03T14:06:35.170 回答