转自: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 */

Linux基本数据类型大小——int,char,long int,long long int的更多相关文章

  1. java.lang基础数据类型boolean、char、byte、short、int、long、float、double (JDK1.8)

    java.lang.Boolean public static int hashCode(boolean value) { return value ? 1231 : 1237; } JDK 1.8新 ...

  2. python 调用C++ DLL,传递int,char,char*,数组和多维数组

    ctypes 数据类型和 C数据类型 对照表 ctypes type C type Python type c_bool _Bool bool (1) c_char char 1-character ...

  3. [转] java中int,char,string三种类型的相互转换

    原文地址:http://blog.csdn.net/lisa0220/article/details/6649707 如何将字串 String 转换成整数 int? int i = Integer.v ...

  4. int *(*a[5])(int, char*)

    int* 表示是一个int型指针;(*a[5])(int, char*)中的a[5]表示是一个有5个元素的数组,而(*)(int, char*)则表示指向一个函数的指针,该函数有两个参数,第一个参数为 ...

  5. java中int,char,string三种类型的相互转换

    如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...

  6. 计算机基础--Java中int char byte的关系

    计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...

  7. QT编译错误: multiple definition of `qMain(int, char**)'

    QT使用过程中来回添加修改代码,结果出现了编译错误:error: multiple definition of `qMain(int, char**)' 一直看我的源文件是都哪里有错误,最后发现是在p ...

  8. C/C++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算

    一.各进制赋值 1.十六进制赋值 int i=0x12AD; int i=0X12AD; int i=0x12Ad; int i=0X12Ad; //以上都是十六进制,表示十进制173: 2.八进制赋 ...

  9. 关于一个指针的题目解析(a,&a,(int*)&a,(int*)((char*)&a + 4))

    #include <stdio.h> void main() { ] = {}; printf(]); printf("\n"); printf("a[1] ...

随机推荐

  1. FPS游戏服务器设计的问题 【转】

    一.追溯 去gameloft笔试,有一个题目是说: 叫你去设计一个FPS(第一人称射击游戏),你是要用TCP呢还是要用UDP,说明理由 . 二.学习 这是两篇网上找到的文章,写非常不错. 当时笔试的时 ...

  2. 自己定义View时,用到Paint Canvas的一些温故,简单的帧动画(动画一 ,&quot;掏粪男孩Gif&quot;顺便再提提onWindowFocusChanged)

    转载请注明出处:王亟亟的大牛之路 之前在绘画的过程中提到了静态的旋转啊,缩放啊,平移等一些效果.那么自己定义的View当然也有动态的效果也就是我们的Animation.经常使用的有三种 View An ...

  3. KDiff

    BeyondCompare是收费的,用了一段时间不能用了.找到一个 KDiff做对比工具,也很好用. 在这里下载: http://sourceforge.net/projects/kdiff3/fil ...

  4. 从头来之【iOS及历史版本特性介绍】

    iOS是apple公司的移动操作系统,在iPhone,iPad,iPod中应用,该名最初为Cisco的网络设备操作系统,后授权于Apple公司使用.下面介绍历史版本的特性. iOS1 最大特性是具有其 ...

  5. php代码收集

    thinkphp <?php class HekaAction extends BaseAction{ public function index(){ require_once './wang ...

  6. 【BLE】CC2541之加入自己定义任务

    本篇博文最后改动时间:2017年01月06日,11:06. 一.简单介绍 本文介绍怎样在SimpleBLEPeripheralproject中.加入一个香瓜任务. (香瓜任务与project原有任务相 ...

  7. Swift语言精要 - 扩展(Extension)

    swift的Extension用户在不访问代码的情况下扩展基本结构类型或自定义类 extension Int { var doubled : Int { } func multiplyWith(ano ...

  8. asp.net序列化

    JsonHelp.cs using System.IO; using System.Text; using System.Runtime.Serialization.Json; namespace W ...

  9. 【树莓派】树莓派与XBMC及Kodi、LibreELEC插件(一)

    网上高人多. 高手在民间,饭桶在机关. 越用树莓派,越发现这玩意儿的潜力,我想,未来我们用它,可以做很多事情. 最近在看树莓派的应用场景,看到网上有人用它做电视盒子. 参考相关文章,简单实践了一下,整 ...

  10. Tim’s iT Blog

    vSphere 5.1 Lab – Nested ESXi 5.1x http://tsmith.co/2012/vsphere-5-1-lab-nested-esxi-5-1/ vSphere 5. ...