• 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;

    输出结果是字节数。

  • 相关阅读:
    Php compiler for .NET framework
    C++ Virtual Inheritance Memory Layout
    MIT公开课汉化
    OpenGL like Vulkan
    C++ Chrono Timer
    VisTools: C++模仿Java体系
    Lua IDE
    PHP调试
    Decoda
    JSRDB
  • 原文地址:https://www.cnblogs.com/wwb0111/p/3098968.html
Copyright © 2020-2023  润新知