每日焦点!C++中的整型变量
2023-01-17 13:58:49 哔哩哔哩

C++有许多类型的变量,通常大家把它们划分为两大类:


【资料图】

基本类型(basic types)

高级类型。

对于基本类型的变量,常用的有:

整型变量(int,short,long):用于存储整数值

浮点型变量(float,double):用于存储小数值

字符型变量(char):用于存储单个字符

布尔型变量(bool):用于存储true或false值。

指针变量(*):用于存储内存地址的变量。

对于其他类型的变量,比如枚举类型、数组、结构体、类等,这些都属于C++中的高级类型。

今天这篇文章主要讨论整型变量。

什么是整型变量

所谓整型变量,顾名思义就是用来存储整数值,可以使用关键字int来声明一个整型变量。下面是一个例子:

int age = 25;

int seconds = 66666;

在这个例子中,我们声明了两个整型变量:age和seconds,并且分别赋值为25和66666。除了int外,C++的整型变量还有一些子类型,比如 short、long、long long等。

整型变量的子类型

上面提到C++的整型变量用来存储一个整数,同时我们也提到整型变量有不同的子类型。既然存储的都是整数,那为什么需要不同的子类型呢?这主要是为了更好地使用内存资源。对于不同的子类型,它们所占用计算机系统的大小和范围是不一样的:

int: 整型变量,通常为32位,范围为-2147483648到2147483647。

short int: 短整型变量,通常为16位,范围为-32768到32767。

long int: 长整型变量,通常为32位,范围为-2147483648到2147483647。

long long int : 长长整型变量, 通常为64位, 范围为 -9223372036854775808 到 9223372036854775807

char: 字符型变量,通常为8位,范围为-128到127。

unsigned int: 无符号整型变量, 通常为32位,范围为0到4294967295

unsigned short int : 无符号短整型变量, 通常为16位,范围为0到65535

unsigned long int : 无符号长整型变量, 通常为32位,范围为0到4294967295

unsigned long long int : 无符号长长整型

以上面的两个变量age和seconds为例:

age表示一个人的年龄。以目前人类的医疗技术来讲,一个人估计也就只能活个百来岁,所以实际上我们完全不需要int类型,使用short类型就绰绰有余了(事实上,我们使用char或者是unsigned char对人类的年龄而言也基本够用了)。如果使用short类型,那么就比int整整节省了一半的内存。

seconds表示离当前时间的秒数。由于一天有24小时,每个小时有3600秒,所以一天中所经历的秒钟数最大可以到24*3600=86400。这个时候如果使用short显然就不够用了,而应该使用范围更大的整型,如int,甚至是long long。

需要注意的是,C++标准并没有严格规定整型变量中各个子类型的大小,因此以上所给出的大小和范围仅供参考,实际情况请参考您所使用的硬件、操作系统、编译器等。或者,您也可以使用sizeof来获得实际长度。下面的代码是测试我所使用的平台上不同整型变量的字节长度:

#include <iostream> 

using namespace std;

int main() {

cout << "int: " << sizeof(int) << endl;

cout << "short: " << sizeof(short) << endl;

cout << "long: " << sizeof(long) << endl;

cout << "long long: " << sizeof(long long) << endl;

return 0;

}

运行后输出的结果罗列在下方。可以看到,short为2个字节,long long为8个字节,而int和long均为4个字节:

int: 4

short: 2

long: 4

long long: 8

无符号整型和有符号整型

C++中的整型变量除了字节长度之分外,还有符号之分:有符号整型(siged)和无符号整型(unsigned)。

有符号整型(signed)是指可以存储正整数和负整数的整型变量。在C++中,默认整型都是有符号整型。比如int,long int, short int 等。

无符号整型(unsigned)是指只能存储非负整数的整型变量。在C++中使用unsigned关键字声明无符号整型变量。 比如unsigned int,unsigned long int,unsigned short int 等。

再回到age和seconds的例子:

如果我们使用age表示一个人的年龄,考虑到一个人的年龄永远不可能为负数,因此我们就可以使用无符号整型,如unsigned int或unsigned short,来定义这个变量。

如果我们使用seconds表示某个日期离今天所相差的秒钟数,那么这个变量就是可正可负的:对于未来的任何一天,这个相差值就是正的,而对于已经过去的任何一天,这个相差值则是负的。因此,对于这个变量,我们就需要使用有符号整型。

总结

整型变量用于存放整数。

整型变量有不同的类型,不同类型所占用的内存大小不同。如int通常为4个字节,而short通常为2个字节。

整型变量有符号之分。无符号型只能表示非负数,而有符号型则可正、可负、可为0。

番外篇:sizeof不是函数!

在上面打印不同整型变量的字节长度的代码中,我多次使用了sizeof。sizeof可以用来获取一个变量或类型的大小,其单位为字节(byte)。这里需要强调的是,虽然sizeof的使用方式看上去像是一个函数(之后的章节我们会介绍函数),但它其实是一个运算符,而不是一个函数。

热门推荐

文章排行

  1. 2023-01-17每日焦点!C++中的整型变量
  2. 2023-01-17要闻速递:【读财报】华泰证券280亿元配股引监管关注,融资必要性存疑
  3. 2023-01-17足协杯决赛赛制有变,郝伟和泰山卫冕有点悬,对手乔迪话中有话
  4. 2023-01-16普利制药获110家机构调研:海南生产基地的5、6和9车间预计今年第一、二季度开始试生产,目前已经和欧盟、FDA和WHO进行检查沟通(附调研问答) 世界播报
  5. 2023-01-16快问|业务模式被监管质疑涉嫌非法集资?认养一头牛回应!
  6. 2023-01-16灵活就业“成长的烦恼”新解-天天信息
  7. 2023-01-16哈文母女美国过年!靠2亿遗产生活没再嫁,女儿戴五件珠宝太豪华
  8. 2023-01-15Web3 基金会公布第 16 批 Grant 资助名单!
  9. 2023-01-15环球观察:2022长沙世界之窗春节活动汇总(庙会+灯会+烟花)
  10. 2023-01-14男子多次借钱称返乡,事情并没有那么简单! 环球快讯
  11. 2023-01-14搞笑句子微信说说(优选91句)-世界聚看点
  12. 2023-01-13重大外资项目接连落户 外企持续看好苏州前景
  13. 2023-01-13联德股份获6家机构调研:目前,公司在稳定增长压缩机业务的同时,也在努力扩大其他业务(附调研问答)-世界新视野
  14. 2023-01-13环球快播:顾全22+5王哲林13+8+6 上海爆冷不敌深圳
  15. 2023-01-13100年前,这个古镇青年已经“触电”3D-环球实时
  16. 2023-01-13每日热文:突传噩耗!78岁“绿叶王”陈万雷去世,家属透露内地生活不幸确诊
  17. 2023-01-12宣恩:绚丽灯展迎新春 流光溢彩年味浓_世界时讯
  18. 2023-01-12苏州吴中城投3亿元公司债将付息 利率3.15%
  19. 2023-01-12世界快资讯丨统筹资源,提升农村地区救治水平
  20. 2023-01-12天天百事通!5G专网纳入通信业重点任务 将助力工业互联网弯道超车