C 这个代码行做什么?

C 这个代码行做什么?,c,int,sizeof,C,Int,Sizeof,嗨,我是C编程新手,有人能告诉我这行代码会做什么吗: i = (sizeof (X) / sizeof (int)) 当代码获取一个bdata值并将其与不同的情况进行比较时,它实际上与case语句一起工作。它计算intnamedX数组的元素数它计算intnamedX返回数组的长度X返回数组的长度X它计算X在内存中的容量除以计算机中整数的大小(2字节或4字节)。如果i是整数,那么它就是整数除法。如果它是浮点数,而X没有偶数的体积,那么它就是实除法 int大小可以更改。X取决于实现。分割结果取决于

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

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

当代码获取一个bdata值并将其与不同的情况进行比较时,它实际上与case语句一起工作。

它计算
int
named
X
数组的元素数它计算
int
named
X
返回数组的长度X

返回数组的长度X

它计算X在内存中的容量除以计算机中整数的大小(2字节或4字节)。如果i是整数,那么它就是整数除法。如果它是浮点数,而X没有偶数的体积,那么它就是实除法

int大小可以更改。X取决于实现。分割结果取决于i的类型


所有这些都意味着,它计算X中包含多少整数。

它计算X的内存容量除以计算机中整数的大小(2字节或4字节)。如果i是整数,那么它就是整数除法。如果它是浮点数,而X没有偶数的体积,那么它就是实除法

int大小可以更改。X取决于实现。分割结果取决于i的类型


所有这些都意味着,它计算X中适合的整数数。

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

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

int a[4];
现在,当
sizeof(a)
完成时,它将返回
4*4=16
作为大小。4个元素,每个元素有4个字节


因此,当您执行
sizeof(a)/sizeof(int)
时,您将得到4,它是数组的长度或大小。

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

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

int a[4];
现在,当
sizeof(a)
完成时,它将返回
4*4=16
作为大小。4个元素,每个元素有4个字节


因此,当您执行
sizeof(a)/sizeof(int)
时,您将得到4,这是数组的长度或大小。

除了常规做法或个人经验之外,没有理由认为此
i=(sizeof(X)/sizeof(int))
计算数组X的大小。通常情况下可能是这样,但理论上X可以是任何类型,因此给定的表达式将计算变量X的大小与int的大小之比(相对于int,X变量占用的内存以字节为单位多多少)


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

除了常规做法或个人经验之外,没有理由认为这
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)

注意,X必须是堆栈上声明的数组,以便编译器知道它的大小,也就是说,不要将它用于在运行时被malloc处理过的数组。您提到的bdata是什么,在您的问题中?在本网站上回答您的问题后,您通常应该通过单击答案旁边的小复选标记来接受您认为最有用和最准确的答案。这会将您的问题标记为“已回答”,并显示已接受的答案,供所有人查看。它还将为您和回答您问题的人带来一些声誉。请注意,X必须是堆栈上声明的数组,这样编译器才能知道它的大小,也就是说,不要将它用于在运行时被malloc处理过的数组您提到的bdata是什么,在您的问题中?在本网站上回答您的问题后,您通常应该通过单击答案旁边的小复选标记来接受您认为最有用和最准确的答案。这会将您的问题标记为“已回答”,并显示已接受的答案,供所有人查看。它也会给你和回答你问题的人一些声誉。除法结果不取决于
i
的类型。如果需要,使用
size\u t
定义的整数类型计算后,结果将转换为
i
的类型。除法结果不取决于
i
的类型。如果需要,在使用
size\u t
定义的整数类型进行计算后,结果将转换为
i
类型。