如果我有以下变量unsigned long long int *size
,最好离开size = calloc(2, sizeof(int))
或它应该是size = calloc(2, sizeof(unsigned long long int))
吗?
谢谢
答案 0 :(得分:2)
第二种选择。您不希望在c中做出有关数据类型大小的假设 它非常依赖于平台/编译器。
答案 1 :(得分:2)
没有理由认为int
和unsigned long long int
的大小相同(可能是)。如果size
被声明为unsigned long long int
,那么在提供的两个选项中,正确的选择是:
size = calloc(2, sizeof(unsigned long long int));
更好的做法是避免使用sizeof
的显式类型:
size = calloc(2, sizeof *size);
这在初始编码中不易出错,并且更易于维护。如果类型在代码的生命周期内发生更改,则只需要在此处更改声明。
答案 2 :(得分:0)
int的大小可以是2或4个字节,具体取决于您运行的计算机 但是,无符号长long的大小至少为8个字节。
所以不,不是一个使用worng大小的好习惯。