Linux基本數據類型大小——int,char,long int,long long int


轉自:http://paddy-w.iteye.com/blog/1403217

在Linux操作系統下使用GCC進行編程,目前一般的處理器為32位字寬,下面是/usr/include/limit.h文件對Linux下數據類型的限制及存儲字節大小的說明。 
  /* We don't have #include_next.   Define ANSI <limits.h> for standard 32-bit words.  */ 
    /* These assume 8-bit 'char's, 16-bit 'short int's,   and 32-bit 'int's and 'long int's.  */ 
    1.char數據類型 
    char類型數據所占內存空間為8位。其中有符號字符型變量取值范圍為?128~127,無符號型字符變量取值范圍為0~255.其限制如下: 
    /* Number of bits in a 'char'. */ 
    #  define CHAR_BIT 8          //所占字節數 
    /* Minimum and maximum values a 'signed char' can hold.  */  //有符號字符型范圍 
    #  define SCHAR_MIN (-128) 
  #  define SCHAR_MAX 127 
    /* Maximum value an 'unsigned char' can hold.  (Minimum is 0.)  */ //無符號字符型范圍 
    #  define UCHAR_MAX 255 
    /* Minimum and maximum values a 'char' can hold.  */ 
    #  ifdef __CHAR_UNSIGNED__ 
    #   define CHAR_MIN 0 
    #   define CHAR_MAX UCHAR_MAX 
    #  else 
    #   define CHAR_MIN SCHAR_MIN 
    #   define CHAR_MAX SCHAR_MAX 
    #  endif 
    2.short int數據類型 
    short int類型數據所占內存空間為16位。其中有符號短整型變量取值范圍為?32768~32767,無符號短整型變量取值范圍為0~65535.其限制如下: 
    /* Minimum and maximum values a 'signed short int' can hold.  */ // 有符號短整型范圍 
    #  define SHRT_MIN (-32768) 
  #  define SHRT_MAX 32767 
    /* Maximum value an 'unsigned short int' can hold.  (Minimum is 0.)  */ 
    // 無符號短整型范圍 
    #  define USHRT_MAX 65535 
    3.int數據類型int類型數據所占內存空間為32位。其中有符號整型變量取值范圍為-2147483648~2147483647,無符號型整型變量取值范圍為0~4294967295U.其限制如下: 
    /* Minimum and maximum values a 'signed int' can hold.  */  //整形范圍 
    #  define INT_MIN (-INT_MAX - 1) 
 #  define INT_MAX 2147483647 
    /* Maximum value an 'unsigned int' can hold.  (Minimum is 0.)  */ 
    //無符號整形范圍#  define UINT_MAX 4294967295U 
    4.long int數據類型 
    隨着宏__WORDSIZE值的改變,long int數據類型的大小也會發生改變。如果__WORDSIZE的值為32,則long int和int類型一樣,占有32位。在Linux GCC4.0-i386版本中,默認情況下__WORDSIZE的值為32.其定義如下: 
    //come from /usr/include/bits/wordsize.h 
    #define __WORDSIZE 32 
    在64位機器上,如果__WORDSIZE的值為64, long int類型數據所占內存空間為64位。其中有長整型變量取值范圍為-9223372036854775808L~9223372036854775807L,無符號長整型變量取值范圍為0~18446744073709551615UL.其限制如下: 
    /* Minimum and maximum values a 'signed long int' can hold.  */ //有符號長整形范圍 
    #  if __WORDSIZE == 64 
    #   define LONG_MAX 9223372036854775807L 
    #  else 
    #   define LONG_MAX 2147483647L 
    #  endif 
    #  define LONG_MIN (-LONG_MAX - 1L) 
  
  /* Maximum value an 'unsigned long int' can hold.  (Minimum is 0.)  *///無符號長整形范圍 
    #  if __WORDSIZE == 64 
    #   define ULONG_MAX 18446744073709551615UL 
    #  else 
    #   define ULONG_MAX 4294967295UL 
    #  endif 
    5.long long int數據類型 
    在C99中,還定義了long long int數據類型。其數據類型限制如下: 
    #  ifdef __USE_ISOC99 
    /* Minimum and maximum values a 'signed long long int' can hold.  *///無符號長長整形范圍 
    #   define LLONG_MAX 9223372036854775807LL 
    #   define LLONG_MIN (-LLONG_MAX - 1LL) 
  /* Maximum value an 'unsigned long long int' can hold.  (Minimum is 0.)  *///有符號長長整形范圍 
    #   define ULLONG_MAX 18446744073709551615ULL 
    #  endif /* ISO C99 */


免責聲明!

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



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