各數據類型取值范圍和所占字節數


https://zhuanlan.zhihu.com/p/98674721

 

 

 

編寫C程序時需要考慮每種數據類型在內存中所占的內存大小,即使同一種數據類型在不同平台下所占內存大小亦不相同。為了得到某個類型在特定平台上的准確大寫,可以使用sizeof運算符,表達式sizeof(type)得到對象或類型的存儲字節大小。

 

  • char存儲大小1字節,值范圍-128~127;
  • unsigned char存儲大小1字節,值范圍0~255;
  • short存儲大小2字節,值范圍-32768~32767;
  • unsigned short存儲大小2字節,值范圍0~65535;
  • int——
16位系統存儲大小2字節,值范圍-32768~32767,
32、64位系統存儲大小4字節,值范圍-2147483648~2147483647;
  • unsigned int——
16位系統存儲大小2字節,值范圍0~65535,
32、64位系統存儲大小4字節,值范圍0~4294967295;
  • long——
16、32位系統存儲大小4字節,值范圍-2147483648~2147483647,
64位系統存儲大小8字節,值范圍-9223372036854775808~9223372036854775807;
  • unsigned long——
16、32位系統存儲大小4字節,值范圍0~4294967295,
64位系統存儲大小8字節,值范圍0~18446744073709551615;
  • float存儲大小4字節,值范圍1.175494351*10^-38~3.402823466*10^38;
  • double存儲大小8字節,值范圍2.2250738585072014*10^-308~1.7976931348623158*10^308;
  • long long存儲大小8字節,值范圍-9223372036854775808~9223372036854775807;
  • unsigned long long存儲大小8字節,值范圍0~18446744073709551615;
  • long double——
16位系統存儲大小8字節,值范圍2.22507*10^-308~1.79769*10^308,
32位系統存儲大小12字節(有效位10字節,為了對齊實際分配12字節),值范圍3.4*10^-4932 到 1.1*10^4932,
64位系統存儲大小16字節(有效位10字節,為了對齊實際分配16字節),值范圍3.4*10^-4932 到 1.1*10^4932;
  • 指針——
16位系統存儲大小2字節,
32位系統存儲大小4字節,
64位系統存儲大小8字節。

 

#include <stdio.h>
#include <stdlib.h>
#include <float.h>

int main(void)
{
    printf("數據類型:char,存儲大小:%d字節、最小值:%hhd,最大值:%hhd\n",
                sizeof(char), CHAR_MIN, CHAR_MAX);
    printf("數據類型:unsigned char,存儲大小:%d字節、最小值:%hhu,最大值:%hhu\n",
                sizeof(unsigned char), 0U, UCHAR_MAX);
    printf("數據類型:short,存儲大小:%d字節、最小值:%hd,最大值:%hd\n",
                sizeof(short), SHRT_MIN, SHRT_MAX);
    printf("數據類型:unsigned short,存儲大小:%d字節、最小值:%hu,最大值:%hu\n",
                sizeof(unsigned short), 0U, USHRT_MAX);
    printf("數據類型:int,存儲大小:%d字節、最小值:%d,最大值:%d\n",
                sizeof(int), INT_MIN, INT_MAX);
    printf("數據類型:unsigned int,存儲大小:%d字節、最小值:%u,最大值:%u\n",
                sizeof(unsigned int), 0U, UINT_MAX);
    printf("數據類型:long,存儲大小:%d字節、最小值:%ld,最大值:%ld\n",
                sizeof(long), LONG_MIN, LONG_MAX);
    printf("數據類型:unsigned long,存儲大小:%d字節、最小值:%lu,最大值:%lu\n",
                sizeof(unsigned long), 0LU, ULONG_MAX);
    printf("數據類型:float,存儲大小:%d字節、最小值:%g,最大值:%g\n",
                sizeof(float), FLT_MIN, FLT_MAX);
    printf("數據類型:double,存儲大小:%d字節、最小值:%lg,最大值:%lg\n",
                sizeof(double), DBL_MIN, DBL_MAX);
    printf("數據類型:long long,存儲大小:%d字節、最小值:%lld,最大值:%lld\n",
                sizeof(long long), LLONG_MIN, LLONG_MAX);
    printf("數據類型:unsigned long long,存儲大小:%d字節、最小值:%llu,最大值:%llu\n",
                sizeof(unsigned long long), 0LLU, ULLONG_MAX);
    printf("數據類型:long double,存儲大小:%d字節、最小值:%Lg,最大值:%Lg\n",
                sizeof(long double), LDBL_MIN, LDBL_MAX);

    return EXIT_SUCCESS;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM