Bootstrap

C语言中整型数据类型

C语言中short、int、long int、long long int、unsigned short、unsigned int、unsigned long int、unsigned long long int数据类型的区别是什么?使用printf()函数如何打印它们?

数据类型区别

在 C 语言中,short、int、long int、long long int、unsigned short、unsigned int、unsigned long int、unsigned long long int 这些数据类型主要在表示范围和存储大小上存在区别,下面详细介绍:

有符号整数类型

short:通常占用 2 个字节(16 位),其取值范围一般是 -32768 到 32767(即 (-2^{15}) 到 (2^{15}-1))。
int:通常占用 4 个字节(32 位),取值范围一般是 -2147483648 到 2147483647(即 (-2^{31}) 到 (2^{31}-1))。不过在一些早期的 16 位系统中,int 可能只占 2 个字节。
**long int:**至少占用 4 个字节,在 32 位系统中通常是 4 个字节,在 64 位系统中通常是 8 个字节。取值范围至少是 -2147483648 到 2147483647(即 (-2^{31}) 到 (2^{31}-1))。
long long int:至少占用 8 个字节,取值范围一般是 -9223372036854775808 到 9223372036854775807(即 (-2^{63}) 到 (2^{63}-1))。

无符号整数类型

无符号整数类型只能表示非负整数,它们的取值范围从 0 开始。
**unsigned short:**通常占用 2 个字节(16 位),取值范围是 0 到 65535(即 (2^{16}-1))。
**unsigned int:**通常占用 4 个字节(32 位),取值范围是 0 到 4294967295(即 (2^{32}-1))。
**unsigned long int:**至少占用 4 个字节,在 32 位系统中通常是 4 个字节,在 64 位系统中通常是 8 个字节。取值范围至少是 0 到 4294967295(即 (2^{32}-1))。
**unsigned long long int:**至少占用 8 个字节,取值范围是 0 到 18446744073709551615(即 (2^{64}-1))。

使用 printf() 函数打印这些数据类型

printf() 函数使用格式说明符来指定要打印的数据类型,以下是各个数据类型对应的格式说明符及示例代码:

#include <stdio.h>
int main() 
{
    short s = 32767;
    int i = 2147483647;
    long int li = 2147483647L;
    long long int lli = 9223372036854775807LL;
    unsigned short us = 65535;
    unsigned int ui = 4294967295U;
    unsigned long int uli = 4294967295UL;
    unsigned long long int ulli = 18446744073709551615ULL;
    // 打印有符号整数类型
    printf("short: %hd\n", s);
    printf("int: %d\n", i);
    printf("long int: %ld\n", li);
    printf("long long int: %lld\n", lli);
    // 打印无符号整数类型
    printf("unsigned short: %hu\n", us);
    printf("unsigned int: %u\n", ui);
    printf("unsigned long int: %lu\n", uli);
    printf("unsigned long long int: %llu\n", ulli);
    return 0;
}

格式说明符解释

%hd:用于打印 short 类型的有符号整数。
%d:用于打印 int 类型的有符号整数。
%ld:用于打印 long int 类型的有符号整数。
%lld:用于打印 long long int 类型的有符号整数。
%hu:用于打印 unsigned short 类型的无符号整数。
%u:用于打印 unsigned int 类型的无符号整数。
%lu:用于打印 unsigned long int 类型的无符号整数。
%llu:用于打印 unsigned long long int 类型的无符号整数。
需要注意的是,在初始化 long int、long long int、unsigned long int 和 unsigned long long int 类型的变量时,建议使用后缀 L、LL、UL 和 ULL 来明确指定类型,避免潜在的类型转换问题。

;