zoukankan      html  css  js  c++  java
  • C和C++中的整形数据类型

    数据类型是编程中碰到的一个最基本问题,下面我们来理解数据类型的实现。

    首先各种数据类型是如何实现的,比如int,比如long。

    首先介绍数据类型相关的一个概念,32位计算机或者64位计算机。计算系统本身是有其特点的,比如32位的系统,64位的系统等。他们之间的差别就是数据宽度的差别,对于32/64位的系统,寄存器大小是32/64位的,CPU访问内存时,一次可读取的数据也是32/64位的。但是这些并不构成数据类型的差别。 数据类型事实上是编程语言中的概念。比如汇编语言中的类型是单字节类型、双字节类型、4字节类型等;而C语言中定义int, long,short等;Java中会定义Object等高级类型。这里我们只介绍基本数据类型。虽然汇编语言比C语言更底层,但那并不意味着C语言中的类型可以一一映射到汇编语言的数据类型(虽然没有很相似)。C语言定义了一些标准数据类型:int, short, long等,具体的可以参考http://en.wikipedia.org/wiki/C_data_types。 但是这些类型并不是固定size的,只是有一些约定:long long  is not smaller than long, which is not smaller than int, which is not smaller than short。这样就造成一些混乱,比如说long的size是多少呢?这个不一定,不同的编译器,不同的机器上得到的结果是不一样的。比如,在MacOSX+XCode上,如果按照64位编译,它是64bit的;如果按照32位编译,它是32bit的;而在Windows上,使用VS编译,不论如何编译它都是32bit的。(这是由64bit 的data model决定的:http://en.wikipedia.org/wiki/64-bit#64-bit_data_models )。在C99中引入了一些变化,包括一个新的头文件stdint.h。其中定义了若干新的数据类型,这些类型就不再是不固定size的。在类型的名称中就包含了它的size,比如:uint64_t,int_least8_t等。

  • 相关阅读:
    [2010山东ACM省赛] Balloons(搜索)
    [2010山东ACM省赛] Greatest Number(数的组合+二分搜索)
    [ACM] hdu 1213 How Many Tables(并查集)
    C Shuffle Cards
    快速读入输出模板
    J Distance to Work
    E Sort String
    H Diff-prime Pairs
    A PACM Team
    区间 (interval)
  • 原文地址:https://www.cnblogs.com/whyandinside/p/2331167.html
Copyright © 2011-2022 走看看