C语言中的整数类型(short,int,long和long long)

整数是编程中最常见的一种数据类型,C语言提供了多种整数类型,包括 shortintlong 和 long long,它们的主要区别在于存储范围和内存占用的大小。

本节将详细讲解这些整数类型的定义、特性、使用场景以及注意事项,帮助你全面理解它们在 C语言中的作用。

C语言整数类型(short,int,long,long long)详解 https://xiecoding.cn/view/416.html

C语言中的整数类型

C语言的整数类型用于存储整数值,可以是有符号的(signed,默认情况,包含正数、负数和零)或无符号的(unsigned,仅包含非负数)。每种类型的大小(以字节为单位)和取值范围由 C标准和具体实现(编译器、硬件平台)共同决定。

以下罗列了四种主要的 C 语言整数类型:

  • short:短整型,通常用于节省内存。
  • int:标准整型,是最常用的整数类型。
  • long:长整型,适用于需要更大范围的场景。
  • long long:超长整型,提供最大的整数范围(C99 引入)。

这些类型可以通过 signed 或 unsigned 修饰符调整,默认情况下是 signed。接下来,我们将逐一深入探讨。

C语言short(短整型)

short 是一种较小的整数类型,通常占用 2 字节(16 位)。它的设计初衷是节省内存,适用于数据范围较小的场景。

取值范围
  • signed short:-32,768 到 32,767(-215 到 215-1)
  • unsigned short:0 到 65,535(0 到 216-1)
实例
#include <stdio.h>

int main(void) {
    short a = 30000;
    unsigned short b = 60000;
    printf("Signed short: %hd\n", a);
    printf("Unsigned short: %hu\n", b);
    return 0;
}

输出结果:

Signed short: 30000
Unsigned short: 60000

注意,在格式化输出时,short 使用 %hd(有符号)或 %hu(无符号)。

C语言int(标准整型)

int 是 C语言中最常用的整数类型,其大小通常与处理器的字长一致(如 32 位系统上是 4 字节,64 位系统上可能是 4 或 8 字节)。它是默认的整数类型,适合大多数通用场景。

取值范围(假设 4 字节)
  • signed int:-2,147,483,648 到 2,147,483,647(-231 到 231-1)
  • unsigned int:0 到 4,294,967,295(0 到 232-1)
实例
#include <stdio.h>

int main(void) {
    int x = -1000000;
    unsigned int y = 4000000000U; // U 表示无符号常量
    printf("Signed int: %d\n", x);
    printf("Unsigned int: %u\n", y);
    return 0;
}

输出结果:

Signed int: -1000000
Unsigned int: 4000000000

注意:无符号整数需要加后缀 U,否则可能触发编译器警告。输出时使用 %d(有符号)或 %u(无符号)。

C语言long(长整型)

long 提供比 int 更大的范围,至少占用 4 字节,在某些 64 位系统上可能是 8 字节。它的具体大小因平台而异,因此在跨平台编程时需谨慎。

取值范围(假设 4 字节):
  • signed long:-2,147,483,648 到 2,147,483,647
  • unsigned long:0 到 4,294,967,295

若为 8 字节,则范围扩展到 ±263 和 0 到 264-1。

实例
#include <stdio.h>

int main(void) {
    long a = 1234567890L; // L 表示 long 常量
    unsigned long b = 4000000000UL;
    printf("Signed long: %ld\n", a);
    printf("Unsigned long: %lu\n", b);
    return 0;
}

输出结果:

Signed long: 1234567890
Unsigned long: 4000000000

注意,long 类型的整数常量后加 L 或 UL,输出使用 %ld(有符号)或 %lu(无符号)。

C语言long long(超长整型)

long long 是 C99 引入的类型,至少占用 8 字节(64 位),用于需要极大数据范围的场景,如科学计算或大文件处理。

取值范围
  • signed long long:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(-263 到 263-1)
  • unsigned long long:0 到 18,446,744,073,709,551,615(0 到 264-1)
实例
#include <stdio.h>

int main(void) {
    long long a = -9223372036854775807LL; // LL 表示 long long 常量
    unsigned long long b = 18000000000000000000ULL;
    printf("Signed long long: %lld\n", a);
    printf("Unsigned long long: %llu\n", b);
    return 0;
}

输出结果:

Signed long long: -9223372036854775807
Unsigned long long: 18000000000000000000

注意,long long 类型的整数常量使用 LL 或 ULL 后缀,输出用 %lld(有符号)或 %llu(无符号)。

类型大小与平台的依赖性

整数类型的大小并非完全固定,C 标准只规定了最小范围和相对关系:short ≤ int ≤ long ≤ long long。实际大小取决于编译器和硬件。例如:

类型32 位系统(字节)64 位系统(字节)
short22
int44(有时 8)
long44 或者 8
long long88

你可以使用 sizeof 操作符检查具体大小

printf("Size of int: %zu bytes\n", sizeof(int));

使用场景与注意事项

  • 选择合适的类型:根据数据范围选择类型,避免浪费内存或溢出。例如,小计数器用 short,大文件偏移量用 long long
  • 溢出风险:超出范围会导致未定义行为。例如,short 从 32,767 加 1 可能变成 -32,768。
  • 跨平台兼容性:使用 <stdint.h> 定义的固定宽度类型(如 int32_t)代替直接使用 int 或 long,以确保一致性。

总结

C语言的整数类型 shortintlong 和 long long 提供了从 16 位到 64 位的灵活选择。通过理解它们的范围、内存占用和使用场景,你可以在编程中做出更优决策。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值