天天动画片 > 八卦谈 > C++中的整型变量

C++中的整型变量

八卦谈 佚名 2024-03-13 06:28:11

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

  • 基本类型(basic types)

  • 高级类型。

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

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

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

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

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

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

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

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

什么是整型变量

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

int age = 25;

int seconds = 66666;

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

整型变量的子类型

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

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

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

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

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

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

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

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

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

  9. 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的使用方式看上去像是一个函数(之后的章节我们会介绍函数),但它其实是一个运算符,而不是一个函数。




本文标题:C++中的整型变量 - 八卦谈
本文地址:www.ttdhp.com/article/51009.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们