为什么 sizeof() 没有为 int 数组给出不同的结果?
Why the sizeof() is not giving the different result for int array?
我在 Windows 10 中为 C 程序使用代码块。我在下面写这个程序,但不是给出 12,而是给出 24 作为输出。我也使用在线编译器检查过它,但它仍然给出相同的输出。
#include<stdio.h>
int main()
{
int num[]={5,7,9,0,1,7};
printf("%d",sizeof(num));
return 0;
}
but instead of giving 12 it gives 24 as output
不确定为什么您会期望输出为 12
。您可能假设 sizeof(int)
为 2
,但不一定在所有平台上都是如此。
sizeof(int)
依赖于平台,sizeof(int)
在您的平台上是 4
。因此,输出为 24
.
注意:要打印 size_t
(也就是 sizeof()
returns),请使用 %zu
:
printf("%zu",sizeof(num));
也许这有助于您的理解:
#include <stdio.h>
int main()
{
int num[] = { 5, 7, 9, 0, 1, 7 };
printf("sizeof(int) = %zu\n", sizeof(int));
printf("sizeof(num[0]) = %zu\n", sizeof(num[0]));
printf("sizeof(num) = %zu\n", sizeof(num));
printf("number of elements in num[]: %zu\n", sizeof(num) / sizeof(num[0]));
return 0;
}
输出:
sizeof(int) = 4
sizeof(num[0]) = 4
sizeof(num) = 24
number of elements in num[]: 6
现在如果你把它翻译成 Pascal:
program sizetest;
var
num: array[1..6] of integer;
begin
writeln('sizeof(integer) = ', sizeof(integer));
writeln('sizeof(num[1]) = ', sizeof(num[1]));
writeln('sizeof(num) = ', sizeof(num));
writeln('number of elements in num[]: ', sizeof(num) / sizeof(num[1]));
end.
您得到以下输出:
sizeof(integer) = 2
sizeof(num[1]) = 2
sizeof(num) = 12
number of elements in num[]: 6
最后(我希望它不会毁了你的世界)看看 python 支持非常大的整数:
import sys
sys.getsizeof(int())
24
是的,二十四岁!所以现在应该清楚 int 的大小确实取决于平台。
我在 Windows 10 中为 C 程序使用代码块。我在下面写这个程序,但不是给出 12,而是给出 24 作为输出。我也使用在线编译器检查过它,但它仍然给出相同的输出。
#include<stdio.h>
int main()
{
int num[]={5,7,9,0,1,7};
printf("%d",sizeof(num));
return 0;
}
but instead of giving 12 it gives 24 as output
不确定为什么您会期望输出为 12
。您可能假设 sizeof(int)
为 2
,但不一定在所有平台上都是如此。
sizeof(int)
依赖于平台,sizeof(int)
在您的平台上是 4
。因此,输出为 24
.
注意:要打印 size_t
(也就是 sizeof()
returns),请使用 %zu
:
printf("%zu",sizeof(num));
也许这有助于您的理解:
#include <stdio.h>
int main()
{
int num[] = { 5, 7, 9, 0, 1, 7 };
printf("sizeof(int) = %zu\n", sizeof(int));
printf("sizeof(num[0]) = %zu\n", sizeof(num[0]));
printf("sizeof(num) = %zu\n", sizeof(num));
printf("number of elements in num[]: %zu\n", sizeof(num) / sizeof(num[0]));
return 0;
}
输出:
sizeof(int) = 4
sizeof(num[0]) = 4
sizeof(num) = 24
number of elements in num[]: 6
现在如果你把它翻译成 Pascal:
program sizetest;
var
num: array[1..6] of integer;
begin
writeln('sizeof(integer) = ', sizeof(integer));
writeln('sizeof(num[1]) = ', sizeof(num[1]));
writeln('sizeof(num) = ', sizeof(num));
writeln('number of elements in num[]: ', sizeof(num) / sizeof(num[1]));
end.
您得到以下输出:
sizeof(integer) = 2
sizeof(num[1]) = 2
sizeof(num) = 12
number of elements in num[]: 6
最后(我希望它不会毁了你的世界)看看 python 支持非常大的整数:
import sys
sys.getsizeof(int())
24
是的,二十四岁!所以现在应该清楚 int 的大小确实取决于平台。