• 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 */

  • 相关阅读:
    span设置宽和高当没有内容的时候也可撑开
    span设置宽和高当没有内容的时候也可以撑开
    块级元素以及内联元素大总结
    内存泄露问题
    Sqlcompletefree
    运用SET ANSI_PADDING OFF创建某个字段为自增列的表,以及插入数据
    Sql Server中通配符
    sql server 2008查询窗口怎么显示行数
    sql server 2008语句中的go有什么用?
    SQL Server 2008 R2[ALTER]列属性修改
  • 原文地址:https://www.cnblogs.com/jikexianfeng/p/5792057.html
Copyright © 2020-2023  润新知