zoukankan      html  css  js  c++  java
  • java,c,c++ 语言之间基本数据类型的比较

    当要进行底层移植的时候肯定会遇到这些问题。特整理了下。


    java语言基本数据类型

     

    在JAVA中一共有八种基本数据类型,他们分别是

    byte、short、int、long、float、double、char、boolean

    整型

    其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样

    byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)

    short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)

    int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)

    long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

    可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。

    在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”。

    浮点型

    float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同

    float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节

    double 1.797693e+308~ 4.9000000e-324 占用8个字节

    double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,可以在数据后面加上“F”。

    浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。

    boolean型(布尔型)

    这个类型只有两个值,true和false(真和非真)

    boolean t = true;

    boolean f = false;

    char型(文本型)

    用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容

    字符的存储范围在/u0000~/uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1,

    char c = ' 1 ';

    我们试着输出c看看,System.out.println(c);结果就是1,而如果我们这样输出呢System.out.println(c+0);

    结果却变成了49。

    如果我们这样定义c看看

    char c = ' /u0031 ';输出的结果仍然是1,这是因为字符'1'对应着unicode编码就是/u0031

    char c1 = 'h',c2 = 'e',c3='l',c4='l',c5 = 'o';

    System.out.print(c1);System.out.print(c2);System.out.print(c3);System.out.print(c4);Sytem.out.print(c5);

    String

    在前面我们看到过这样的定义:

    String s = "hello";

    System.out.println(s);跟上面的5条语句组合起来的效果是一样的,那么String是个什么呢?String是字符串,它不是基本数据类型,它是一个类。

     


     

     c语言数据类型

     

    1.整型数据类型
    C定义了5种整型数据类型。
    整型数据类型表 

    序号 类型名称 说明 字节数 取值范围
    1 signed char 有符号的单字节整数类型 1 -128~+127
    2 short int 短整型 2 -32768~+32767
    3 int 整型 4 -2147438648~+2147438647
    4 long int 长整型 4 -2147438648~+2147438647
    5 long long int 长长整型 8 -9223372036854775808~+-9223372036854775807

     

    2.无符号整数类型
    对应有符号类型,还有无符号整数类型。
    无符号整数类型表

    序号 类型名称 字节数 取值范围
    1 unsigned char 1 0~255
    2 unsign short int 2 0~65535
    3 unsigned int 4 0~4294967295
    4 unsigned long int 4 0~4294967295
    5 unsign long long int 8 0~18446744073709551615

     

    3.整型常量 
    整型常量是指用以表示整型数值的常量,分为短整型(short int)、整型(int)、长整型(long int )和长长整型(long long int)四种。C默认整型(int)。 各种类型整型常量进制表示表(后缀不区分大小写)

    序号 数据类型 八进制 十进制 十六进制
    1 整型 0112 74 0x4a
    2 长整型(l) 0112l 74l 0x4al
    3 长长整型(ll) 0112ll 74ll 0x4all
    4 无符号整型(u) 0112u 74u 0x4au
    5 无符号长整型(ul) 0112ul 74ul 0x4aul
    6 无符号长长整型(ull) 0112ull 74ull 0x4aull

     

    4.字符数据类型 
    C语言中字符型数据只有一种,即char型数据。一般也把char直接称为字符型。字符型占用内存空间最少,一般占用一个字节,存储在char类型变量的整数可以表示为有符号或无符号的值,这取决于编译器。

     

    5.字符变量
    字符变量是用于存储字符型数值的变量。字符型变量也分为两种:有符号和无符号型。

     

    6.浮点型数据类型
    C语言定义了三种浮点数据类型:
    •float,单精度
    •double,双精度
    •long double,长双精度
    C标准中对不同类型的浮点数有不同的规定,编译器不同或硬件条件不同,字节长度也不相同。

     

    浮点型的字节长度、精度、数量级范围和输出输入格式表

    序号 数据类型 字节长度 精度 数量级范围 printf和scanf格式
    1 float(f) 4 7 -38~38 %f
    2 double 8 约16 -308~308 %f
    3 long double(1) 12 约19 -4932~4932 %llf

     

    7.浮点型精度
    浮点型精度从低到高排列为float、double和long long double。

     

    8.浮点型的存储方式
    浮点型数值以科学计数法的表示形式存储在内存中。浮点型的内存形式包含三个部分:
    1)符号位
    符号位浮点型的符号位只有一位,为最高位。该位为1,表示负数,该位为0,为非负数。
    2)指数位
    浮点型的指数位以补码形式存储,是科学计数法的指数部分。
    3)基数位
    基数位是浮点型的最后一位,这个位决定数值的精度。
    浮点型储存分段表

    序号 数据类型 符号位 指数位 基数位 偏差值
    1 float 1 8 23 127
    2 double 1 11 52 1023
    3 long double 1 15 64 16383

     

     

     c++语言基本数据类型

    C++基本数据类型有字符型(char)、整数类型(int)、浮点型(float)、双精度型(double)和无值类型(void),下表给出各种基本类型和内存中的位数和表示数值的范围(对于字符型存储的是ASCII码):

    基本数据类型

    类型 类型名
    位数
    范围
    字符型 char
    8
    -128 ------ 127
    整型 int
    16
    -32768 ------ 32767
    浮点型 float
    32
    3.4E-38 ------ 3.4E+38
    双精度型 double
    64
    1.7E-308 ------ 1.7E+308
    无值类型 void
    0
    0

        类型名前可以加修饰符(void类型除外),修饰符有 signed(带符号的)、 unsigned(无符号的)、 short(短的)和 long(长的)。signed 和 unsigned 用于字符型或整型,short 和 long 可用于整型,还可用于双精度型,如下表所示:

    基本数据类型和修饰符

    类型 类型名
    位数
    范围
    字符型 char
    8
    -128 ------ 127
    signed char
    8
    -128 ------ 127
    unsigned char
    8
     0 ------ 255
    整型 int
    16
    -32768 ------ 32767
    signed int
    16
    -32768 ------ 32767
    unsigned int
    16
      0 ------ 65535
    short int
    16
    -32768 ------ 32767
    signed short int
    16
    -32768 ------ 32767
    unsigned short int
    16
      0 ------ 65535
    long int
    32
    -2,147,483,648 ---- 2,147,483,647
    signed long int
    32
    -2,147,483,648 ---- 2,147,483,647
    unsigned long int
    32
      0 ----------------4,294,967,295
    浮点型 float
    32
    3.4E-38 ------ 3.4E+38
    双精度型 double
    64
    1.7E-308 ------ 1.7E+308
    long double
    80
    3.4E-4932 ------ 1.1E+4932

        当用 signed 、unsigned 、short 和 long 修饰 int 时,int 可省略。

    字符型实际上是一个字节的整型,浮点型和双精度型表示实数。

    注:不同编译系统,整数的存储长度不同。对于16位的编译系统,int为2字节;而对于32位的编译系统,int为4字节。可以用sizeof运算符测试。如:

    cout<<sizeof(int)<<endl;

    输出结果是字节数。

  • 相关阅读:
    5-python基础—获取某个目录下的文件列表(适用于任何系统)
    Automated, Self-Service Provisioning of VMs Using HyperForm (Part 1) (使用HyperForm自动配置虚拟机(第1部分)
    CloudStack Support in Apache libcloud(Apache libcloud中对CloudStack支持)
    Deploying MicroProfile-Based Java Apps to Bluemix(将基于MicroProfile的Java应用程序部署到Bluemix)
    Adding Persistent Storage to Red Hat CDK Kit 3.0 (在Red Hat CDK Kit 3.0添加永久性存储)
    Carve Your Laptop Into VMs Using Vagrant(使用Vagran把您笔记本电脑刻录成虚拟机)
    使用Python生成一张用于登陆验证的字符图片
    Jupyter notebook的安装方法
    Ubuntu16.04使用Anaconda5搭建TensorFlow使用环境 图文详细教程
    不同时区的换算
  • 原文地址:https://www.cnblogs.com/wwb0111/p/3098968.html
Copyright © 2011-2022 走看看