C++中使用 sizeof 确定变量的长度

C++中使用 sizeof 确定变量的长度

变量长度指的是程序员声明变量时,编译器将预留多少内存,用于存储赋给该变量的数据。变量的长度随类型而异, C++ 提供了一个方便的运算符——sizeof,可用于确定变量的长度(单位为字节)或类型。

sizeof 的用法非常简单。要确定 int 变量的长度,可调用 sizeof 并给它传递参数 int:

cout << "Size of an int: " << sizeof (int);

以下示例程序演示了如何获悉各种标准 C++ 变量类型的长度:

#include <iostream>

int main()
{
    using namespace std;
    cout << "Computing the size of some C++ inbuilt variable types" << endl;

    cout << "Size of bool: " << sizeof(bool) << endl;
    cout << "Size of char: " << sizeof(char) << endl;
    cout << "Size of unsigned short int: " << sizeof(unsigned short) << endl;
    cout << "Size of short int: " << sizeof(short) << endl;
    cout << "Size of unsigned long int: " << sizeof(unsigned long) << endl;
    cout << "Size of long: " << sizeof(long) << endl;
    cout << "Size of int: " << sizeof(int) << endl;
    cout << "Size of unsigned long long: "<< sizeof(unsigned long long) << endl;
    cout << "Size of long long: " << sizeof(long long) << endl;
    cout << "Size of unsigned int: " << sizeof(unsigned int) << endl;
    cout << "Size of float: " << sizeof(float) << endl;
    cout << "Size of double: " << sizeof(double) << endl;

    cout << "The output changes with compiler, hardware and OS" << endl;

    return 0;
}

输出:

Computing the size of some C++ inbuilt variable types
Size of bool: 1
Size of char: 1
Size of unsigned short int: 2
Size of short int: 2
Size of unsigned long int: 4
Size of long: 4
Size of int: 4
Size of unsigned long long: 8
Size of long long: 8
Size of unsigned int: 4
Size of float: 4
Size of double: 8
The output changes with compiler, hardware and OS

分析:

示例程序的输出指出了各种类型的长度(单位为字节),这是针对我使用的平台(编译器、操作系统和硬件)而言的。具体地说,这是在 64 位系统中以 32 位模式(使用 32 位编译器进行编译)运行该程序得到的结果。如果使用 64 位编译器进行编译,结果可能不同。我之所以使用 32 位编译器,是因为这样该应用程序在 32 位和 64 位系统上都能运行。输出表明,无符号类型和相应的有符号类型的长度相同,唯一的差别在于,后者的 MSB 包含符号信息。

注意:

输出中的长度单位为字节。类型的长度是一个重要参数,对用于存储数字的类型来说尤其如此。 short int 可存储的数值范围比 long long 小,因此您不能使用 short int 变量来存储国家人口数。

提示:

C++11 引入了固定宽度的整型, 让您能够以位为单位指定整数的宽度。 这些类型为 int8_t 和 unit8_t,分别用于存储 8 位的有符号和无符号整数。您还可能使用 16 位、 32 位和 64 位的整型,它们为 int16_t、 uint16_t、 int32_t、 uint32_t、 int64_t 和 uint64_t。要使用这些类型,必须包含头文件<cstdint>。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值