[英]Using unsigned long long int for dynamic allocation
如果我具有以下變量unsigned long long int *size
,則保留size = calloc(2, sizeof(int))
還是一個好習慣,還是應該將其設置為size = calloc(2, sizeof(unsigned long long int))
?
謝謝
第二種選擇。 您不想對c中的數據類型大小進行假設。
這是非常依賴於平台/編譯器的。
沒有理由假定int
和unsigned long long int
的大小相同(可能是相同的)。 如果將size
聲明為unsigned long long int
,則在顯示的兩個選項中,正確的選擇是:
size = calloc(2, sizeof(unsigned long long int));
更好的做法是避免使用帶有sizeof
顯式類型:
size = calloc(2, sizeof *size);
這在初始編碼中不太容易出錯,並且更易於維護。 如果在代碼有效期內更改類型,則僅需要在此處更改聲明。
根據您運行的機器,int的大小可以為2或4個字節。
但是,無符號long long的大小至少為8個字節。
因此,不可以, 不要使用磨損的尺碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.