整形的分类:short in long longlong

该博客探讨了在不同操作系统环境下,C语言中的short、int、long和long long四种整型变量所占用的内存大小。在Windows和不同的Linux系统中,long类型的字节数有所不同,而short、int和long long的字节数则相对固定。博客通过示例代码展示了打印这些变量的十六进制值,进一步阐述了它们的表示范围。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	short a = 0xffff;
	int b = 0xffffffff;
	long c = 0xffffffffL;
	long long d = 0xffffffffffffffffLL;

	printf("a = %hx\n", a);
	printf("b = %x\n", b);
	printf("c = %lx\n", c);
	printf("d = %llx\n", d);


	return 0;
}

运行结果如下:

 

整形变量占用内存的大小与操作系统有关:

short  2字节

int 4字节

long   windows:4字节  linux32位 4字节  linux64位 8字节

longlong 8字节

### C/C++ 中 `long long` 数据类型的定义与作用 #### 1. **`long long` 的基本概念** 在 C 和 C++ 编程语言中,`long long` 是一种扩展整数类型,用于表示更的数值范围。它通常被用来处理超出标准 `int` 或 `long` 范围的整数。 这种数据类型最早由 ISO/IEC 9899:1999(即 C99 标准)引入,并随后成为 C++11 标准的一部分。其主要目的是提供更广泛的数值支持,特别是在需要高精度计算的应用场景下[^3]。 --- #### 2. **`long long` 的存储小和取值范围** 对于数现代编译器而言,`long long` 占用 8 字节(64 位),具体如下: - **有符号 (`signed long long`):** - 取值范围为 \(-2^{63}\) 到 \(2^{63} - 1\), 即从 `-9,223,372,036,854,775,808` 到 `9,223,372,036,854,775,807`。 - **无符号 (`unsigned long long`):** - 取值范围为 \(0\) 到 \(2^{64} - 1\), 即从 `0` 到 `18,446,744,073,709,551,615`。 需要注意的是,具体的实现可能因平台而异,但按照 C99 和 C++11 标准的规定,`long long` 至少应能容纳上述范围内的值。 --- #### 3. **实际应用中的意义** 由于能够表达极的正负整数值,`long long` 常见于以下领域: - 规模科学计算; - 高性能数据库索引设计; - 文件系统管理(如容量磁盘地址分配); - 加密算法实现; 例如,在某些加密协议中,公钥长度可能会达到几十甚至上百位十进制数字,此时就需要依赖像 `long long` 这样的宽整型来完成初步运算或中间变量存储。 以下是展示如何声明并初始化一个简单的 `long long` 类型变量的例子: ```cpp #include <iostream> using namespace std; int main() { signed long long maxSignedLL = 9223372036854775807; unsigned long long minUnsignedLL = 0ULL, maxUnsignedLL = 18446744073709551615ULL; cout << "Max value of signed long long: " << maxSignedLL << endl; cout << "Min and Max values of unsigned long long: [" << minUnsignedLL << ", " << maxUnsignedLL << "]" << endl; return 0; } ``` 此代码片段展示了 `long long` 的最最小边界及其打印方法,其中后缀 `ULL` 表明该常量属于无符号长整形类别[^2]。 --- #### 4. **与其他整数类型的对比分析** | 数据类型 | 存储小(字节数)| 数值范围 | |------------------|---------------|-------------------------------------------------------------------------| | short | 2 | (-32,768 ~ 32,767)(带符号); (0~65,535)(不带符号) | | int | 4 | (-2,147,483,648 ~ 2,147,483,647)(带符号); (0~4,294,967,295)(不带符号)[^3] | | long | 平台相关 | 一般同等于 int 或更 | | long long | 8 | 如前所述 | 通过上表可以看出,随着所需内存增加,每种类型所能代表的最绝对值得到显著提升,从而满足不同层次的需求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值