嗨,我是 C 编程的新手,谁能告诉我这行代码会做什么:
i = (sizeof (X) / sizeof (int))
当代码接受 bdata 的值并将其与不同的情况进行比较时,该代码实际上与 case 语句一起使用。
通常,这样的语句用于计算数组中的元素个数。
让我们考虑一个整数数组,如下所示:
int a[4];
现在,sizeof(a)
完成后它将返回4*4 = 16
大小。4 个元素,每个元素为 4 个字节。
所以,当你这样做时sizeof(a) / sizeof(int)
,你会得到 4 ,这是数组的长度或大小。
它计算int
named数组的元素数X
。
返回数组 X 的长度
它计算 X 在内存中的体积除以计算机中整数的大小(2 字节或 4 字节)。如果 i 是整数,则它是整数除法。如果它是浮点数并且 X 没有偶数,则它是真正的除法。
int 大小可以改变。X 取决于实现。除法结果取决于 i 的类型。
所有这些意味着,它计算有多少 int 适合 X。
除了常见的实践或个人经验,没有理由认为这会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)