C++中的整型

目录
  • 1、整型
  • 2、short、int、long和long long
  • 3、位与字节
  • 4、初始化
  • 5、无符号类型

1、整型

整型即整数,与小数对应。

许多语言只能表示一种整型(如Python),而在C++当中根据整数的范围提供了好几种不同的整型。

C++的基本整型有charshortintlong,在C++ 11标准中,新增了long long。在部分编译器当中不支持long long,而支持__int64。稍后会有单独的文章对此进行解释和补充说明。

其中char类型有一些特殊属性,通常被用来当做字符而非整数。另外,每一种类型都有有符号版本和无符号版本两种,所以总共一共有10种类型。

2、short、int、long和long long

这四种类型都是整型,唯一的不同是范围的区别。受到底层硬件的影响,C++当中这四种类型的范围并不是固定的。由于要兼容各种不同类型的系统与硬件,所以没有办法对类型进行统一。

为了避免引起不便,C++提供了一种灵活的标准,它确保了每一种类型的最小范围。

  • short至少16位
  • int至少与short一样长
  • long至少32位,且至少与int一样长
  • long long至少64位,且至少与long一样长

3、位与字节

计算机内存的基本单元是位,英文是bit,音译成比特。一位bit只有0和1两个值,可以将其看成是开关。8位bit一共有256中不同的组合,即。因此8位bit可以表示0-255或者-128-127。

每增加一个二进制位,可以表示的范围翻倍。因此16位可以表示65536个值,而32位可以表示4294672296个值,64位更大,大约能表示。这个范围足够表示银河系中所有的星星。

8位二进制位是一个字节(byte),字节是计算机存储的最小计量单位。1024个字节称为1KB,而1024个KB又被称为1MB,1024MB为1GB。

一般在操作系统当中,都有最小长度,这通常是由CPU的位数所决定的。在常用的操作系统当中如LinuxWindowsMacOS,int和long为32位,short为16位,而long long为64位。

除了根据通常情况来推测之外,C++当中也提供了一些现成的工具来查看。比如sizeof函数,sizeof函数可以查看变量占据的字节数。这个函数既可以接受变量类型也可以接受变量本身,如果传入的是变量类型,那么计算的结果就是该类型的变量占据的内存大小,同理如果是变量本身,则表示变量本身占据的内存。

需要注意的是,当我们查看对象是变量类型时,需要使用括号,如果是变量本身,则括号是可选的。

cout << sizeof(int) << endl;
int a = 3;
cout << sizeof a << endl;

上述两个cout的输出结果都是4。

除了sizeof函数之外,C++还提供了大量的常量。比如INT_MAXLONG_MAX等,顾名思义这些常量的值就是各个类型的最大值。C++ primer当中说这些常量存储在头文件climits当中,但我尝试了一下,发现没有引入这个头文件也一样能够访问,所以可能已经成为内置变量了。

有最大值,也一样有最小值,如INT_MINLONG_MIN等。我个人感觉这块使用频率不高,就不过多赘述了,有需要去翻阅一下primer即可。

4、初始化

我们之前在介绍变量的时候只是介绍了声明变量的方式,类似于:

int a, b;

但其实我们可以把变量的声明语句与赋值语句结合在一起,在声明的同时进行初始化。例如:

int a = 3;
char c = 'c';

当然这个只是最基础的初始化方式,尤其是后续涉及到面向对象时还有更多的使用细节。

5、无符号类型

前文当中在介绍位和字节的时候曾经提到过,比如8位二进制位既可以表示0-255也可以表示-128-127。这其实就是有符号和无符号的区别。

如果我们确定我们要存储的整数为非负数,并且想要拥有更大的范围,就可以使用无符号修饰符unsigned来修饰这几种类型。

比如:

unsigned short ushort;
unsigned int uint;
unsigned long ulong;
unsigned long long ull;

其中unsigned int可以简写成unsigned,其他的用法和有符号的整数是一样的。

到此这篇关于C++中的整型的文章就介绍到这了,更多相关C++整型内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • c++ 预处理之正整型实现方法

    虽然通过一系列的奇技淫巧,让预处理也图灵完备一把,但是用预处理来做计算,真的很吃力不讨好.因为预处理一开始设计出来的目的,就没什么野心,原本就仅仅只是为了做简简单单的文本替换工作,并没有想过要成为正儿八经的编程语言,即便是最最缩水版脚本语言的功能要求都达不到.只是后来,实在是大量要求要批量自动生成代码,特别是c++11之前的版本玩什么模板元编程,铺天盖地的要有大量相似的代码.这些代码用其他工具来生成,当然形式会更加漂亮,但是始终还是用原生的预处理来做这种事情会更加的方便,否则每次修改,都要运行一

  • C++实现将长整型数转换为字符串的示例代码

    C++实现将长整型数转换为字符串 /* * Created by Chimomo */ #include <iostream> using namespace std; char *convertLongToStr(long L) { int i = 1; int n = 1; while (!(L / i < 10)) { i *= 10; ++n; } char *str = (char *) malloc(n * sizeof(char)); int j = 0; while (L

  • C++按照正态分布来排列整型数组元素

    题目要求如下: 给定一个数组input[], 如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置, 如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上, 然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数. 这种处理后结果,如果按照元素的值表示一种分布的图形的话,那绘制后的图形应该是正态分布. 关于正态分布: 正态分布(Normal distribution)又名高斯分布(Gaussia

  • C++ 整型与字符串的互转方式

    flyfish 字符串转整型 C的方法 cstr是char*或者const char*类型的字符串 int num = atoi(str); int num = strtol(cstr, NULL, 10); //10 表示进制 C++11的方法 void test1() { std::string str1 = "1"; std::string str2 = "1.5"; std::string str3 = "1 with words"; i

  • C++中字符串与整型及浮点型转换全攻略

    目录 一.string 和 char [] 1. string 转 char [] 2. char [] 转 string 二.char [] 与数字互转 1. char [] 转整型和浮点型 2. 整型和浮点型 转char [] 3. 整型转 char [] (特殊函数实现) 首先请出今日主角:stdlib.h (YYDS) 这个库包含有随机数,abs等许多通用函数,当然也有类型的转换 下面我们一点点来看如何完成格式转换 一.string 和 char [] 1. string 转 char

  • C++中的整型

    目录 1.整型 2.short.int.long和long long 3.位与字节 4.初始化 5.无符号类型 1.整型 整型即整数,与小数对应. 许多语言只能表示一种整型(如Python),而在C++当中根据整数的范围提供了好几种不同的整型. C++的基本整型有char.short.int.long,在C++ 11标准中,新增了long long.在部分编译器当中不支持long long,而支持__int64.稍后会有单独的文章对此进行解释和补充说明. 其中char类型有一些特殊属性,通常被用

  • 在JavaScript中判断整型的N种方法示例介绍

    整数类型(Integer)在JavaScript经常会导致一些奇怪的问题.在ECMAScript的规范中,他们只存在于概念中: 所有的数字都是浮点数,并且整数只是没有一组没有小数的数字. 在这篇博客中,我会解释如何去检查某个值是否为整型. ECMAScript 5 在ES5中有很多方法你可以使用.有时侯,你可能想用自己的方法:一个isInteger(x)的函数,如果是整型返回true,否则返回false. 让我们看看一些例子. 通过余数检查 你可以使用余数运算(%),将一个数字按1求余,看看余数

  • python3中int(整型)的使用教程

    Python3支持三种不同的数值类型: 整型(int)--通常被称为是整型或整数,可以是正整数或负整数,不带小数点.Python3整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的. 浮点型(float)--浮点型数字由整数部分和小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250) 复数(complex)--复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的

  • 浅析Python 中整型对象存储的位置

    在 Python 整型对象所存储的位置是不同的, 有一些是一直存储在某个存储里面, 而其它的, 则在使用时开辟出空间. 说这句话的理由, 可以看看如下代码: a = 5 b = 5 a is b # True a = 500 b = 500 a is b # False 由上面的代码可知, 整型 5 是一直存在的, 而整型 500 不是一直存在的. 那么有哪些整数是一直存储的呢? a, b, c = 0, 0, 0 while a is b: i += 1 a, b = int(str(i)),

  • 如何通过配置自动实现ValueList中hql语句的整型参数转换

    通过valuelist的queryMap传递过来的参数默认都为string类型,在valuelist配置文件的hql中,如果直接将该值赋给整型的字段会报错.一般我们会在hql中利用转型函数来进行处理,如下: 复制代码 代码如下: <entry key="areasInfoAdapter">       <bean  parent="abstractHibernate30Adapter">                   <prope

  • C#中把字符串String转换为整型Int的小例子

    本文介绍如何在使用C#开发程序时,将一个字符串String变量的值转换为一个整型Int变量. 比如,我们在C#中定义一个字符串变量,用它来获取一个xml中的值.小编这里并不是故意要用一个字符串去获取xml节点的值,而是使用InnerText的方式获取的值必须是字符串String类型的. 复制代码 代码如下: string tmpValue = ""; tmpValue = xml.DocumentElement["expirydays"].InnerText.Tri

  • PHP中把有符号整型转换为无符号整型方法

    在一个短地址项目中,根据六位字符与ID的相互映射的算法,当ID超过2147483647的时候,六位字符的短地址映射的ID变成有符号的整型. 复制代码 代码如下: ID        >     六位字符    >映射ID ID: 2147483644 > TfffVQ > 2147483644 ID: 2147483645 > efffVQ > 2147483645 ID: 2147483646 > NfffVQ > 2147483646 ID: 21474

  • 找到整型阵列中最大值和最小值的几种方法总结

    在整型阵列中,我们需要从中获取阵列元素的最大值和最小值: 方法一:先是使用Array进行排序,然后从排序后数组中,最一个元素为最小,最后一个元素为最大. Source Code public static int FindMaxNumber(params int[] stringValue) { Array.Sort(stringValue); return stringValue[stringValue.Length -1]; } public static int FindMinNumber

  • 实例介绍Python中整型

    Python中有以下几个基本的数据类型: 整数 int 字符串 str 浮点数 float 集合 set 列表 list 元组 tuple 字典 dict 布尔类型 bool 日期 date 其中可变数据类型有:list(列表).dict(字典).set(集合): 不可变数据类型有:int(整型).float(浮点型).str(字符串).bool(布尔类型).tuple(元组): 什么可变对象及不可变对象? 不可变对象:就是说该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值

  • 深入分析python中整型不会溢出问题

    本次分析基于 CPython 解释器,python3.x版本 在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数.在python3后,统一使用了长整型.这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型,整型,长整型...因此python就降低其他行业的学习门槛了. 那么,不溢出的整型实现上是否可行呢? 不溢出的整型的可行性 尽管在 C 语言中,整型所表示的大小是有范围的,但是 python 代码是保

随机推荐