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

时间: 2024-10-01 05:02:27

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

C++中 int char 的相互转换

特别注意char 只能处理单个字符如,1,2,3到9等,不能接收11,11等多位数字 // 取到一个char的ASCII值 char c='A'; int i=c; printf("%d",i); //值为数字的char转为对应数字 char c1='3'; int c1int=c1-'0'; //int转为char型 int i2=4; char c2=i2+'0'; printf("%c",c2); 一个数(而不是一个数字) 如何转为char str[]呢? 代

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

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

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

原文地址:http://blog.csdn.net/lisa0220/article/details/6649707 如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将字串 String 转换成Integer ? Integer integer=Integer.valueOf(str); 如何将整数 int 转换成字串 String ? 1.) S

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

int* 表示是一个int型指针;(*a[5])(int, char*)中的a[5]表示是一个有5个元素的数组,而(*)(int, char*)则表示指向一个函数的指针,该函数有两个参数,第一个参数为int型,第二个是字符指针型,结合前面部分,表示这个函数的返回类型为int型,所以(*a[5])(int, char*)为5个返回类型为int型函数组成的数组:整个结合起来int* (*a[5])(int, char*)就是指向5个返回类型为int型函数组成的数组的指针变量,变量名为a.本质是指向数

在C语言中,double long unsigned int char 类型数据所占字节数

在C语言中,double  long  unsigned  int  char  类型数据所占字节数和机器字长及编译器有关系:所以,int,long int,short int的宽度都可能随编译器而异.但有下面几条原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位. unsigned 是无符号的意思.

C++ 中类型转换 xmlChar * 与Char * 转换,Char *与int 转换,Char *与Float转换,int 与portNumBits转换

使用libxml2 得到一个节点的内容: xmlChar *value = xmlNodeGetContent(node) 1.XmlChar 转换成Char char * stream = (char *) value; 2.Char *与  int 转换 int x = atoi(stream); #include "stdio.h" #include "stdlib.h" main() { char *p="1234567"; int x;

multiple definition of `qMain(int, char**)&#39;

QT C++ 我上一分钟运行地好好的,下一分钟就无法通过编译了.查了半天发现在IDE自动生成的项目文件.pro中 main竟然包含了两遍.我对这表示很无语,我完全是通过IDE来操作,却产生一些我不易察觉的问题.所以我不信任IDE,也一直找不到一款得心应手的IDE SOURCES += main.cpp mainwindow.cpp main.cpp mainwindow.cpp HEADERS += mainwindow.h mainwindow.h multiple definition of

QT编译错误: multiple definition of `qMain(int, char**)&#39;

QT使用过程中来回添加修改代码,结果出现了编译错误:error: multiple definition of `qMain(int, char**)' 一直看我的源文件是都哪里有错误,最后发现是在pro文件中出的问题,频繁的添加以及移除文件,导致HEADERS以及SOURCES中会重复添加 解决办法:把重复项删除! QT编译错误: multiple definition of `qMain(int, char**)' 原文地址:https://www.cnblogs.com/MakeView6

【C语言】测试系统各数据类型大小代码

测试各系统不同数据类型大小代码 一.相关基础知识 不同环境下各数据类型大小可能不相等,(某些环境下,类型带下可以选择)故测了就知道! 二.具体内容 三.分析总结 四.实例测试 #include<stdio.h> int main(void) { signed int a1; unsigned int a2; signed long int a3; unsigned long int a4; signed long long int a5; unsigned long long int a6;