【C/C++】uin8_t uint16_t uint32_t uint64_t数据类型解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 为了代码编写和阅读方便,我们通常会将数据类型名称声明为简写方式,即uin8_t/uint16_t/uint32_t/uint64_t,或者UINT8/UINT16/UINT32/UINT64。
作者: 柒号华仔
个人主页: 欢迎访问我的主页
个人信条:星光不问赶路人,岁月不负有心人。
个人方向:专注于5G领域,同时兼顾其他网络协议,编解码协议,C/C++,linux等,感兴趣的小伙伴可以关注我,一起交流。


1.基本数据类型

C语言中常用的基本数据类型有:char、short、int、long、float、double:

类型 定义 大小 取值范围 小数点范围 输出格式
char 字符型 1byte -128- 127 %c
short 短整型 2byte -32768~32767 %d
int 整型 4byte -2 147 483 648~2 147 483 647 %d
long 长整型 32位4byte
64位8byte
-2 147 483 648~2 147 483 647 %ld
long long 64位长整型 8byte -9223372036854775808~
9223372036854775807
%lld
float 单精度浮点型 4byte -3.4E+38 ~ 3.4E+38 6位 %f
double 双精度浮点型 8byte -1.7E-308~1.7E+308 12位 %lf

2.无符号数据类型

在上述整型数据类型前加上unsigned,则为无符号类型:

类型 定义 大小 取值范围 小数点范围 输出格式
unsigned char 无符号字符型 1byte 0~255 %u
unsigned short 无符号短整型 2byte 0~65535 %u
unsigned int 无符号整型 4byte 0~4294967295 %u
unsigned long 无符号长整型 32位4byte
64位8byte
0~4294967295 %lu
unsigned long long 无符号64位长整型 8byte 0~18446744073709551615 %Ilu

3.整型数据别名

为了代码编写和阅读方便,我们通常会将数据类型名称声明为简写方式,即uin8_t/uint16_t/uint32_t/uint64_t,或者UINT8/UINT16/UINT32/UINT64。因此uin*_t并不是新的数据类型,而是通过关键字typedef声明后的数据形式。

typedef char        INT8;
typedef short       INT16;
typedef int         INT32;
typedef long long   INT64;

typedef unsigned char        UINT8;
typedef unsigned short       UINT16;
typedef unsigned int         UINT32;
typedef unsigned long long   UINT64;

typedef unsigned char        uint8_t;
typedef unsigned short       uint16_t;
typedef unsigned int         uint32_t;
typedef unsigned long long   uint64_t;

4.代码验证

#include <stdio.h>
#include <stdlib.h>

typedef unsigned char        uint8_t;
typedef unsigned short       uint16_t;
typedef unsigned int        uint32_t;
typedef unsigned long long   uint64_t;

int main(void)
{
    char cData = 'a';
    short sData = 1;
    int iData = 2;
    long lData = 3;
    long long llData = 4;
    uint8_t ucData = 5;
    uint16_t usData = 6;
    uint32_t uiData = 7;
    uint64_t ullData = 8;

    printf(" cData = %c, sizeof(char) = %lu\n", cData, sizeof(cData));
    printf(" sData = %d, sizeof(short) = %lu\n", sData, sizeof(sData));
    printf(" iData = %d, sizeof(int) = %lu\n", iData, sizeof(iData));
    printf(" lData = %ld, sizeof(long) = %lu\n", lData, sizeof(lData));
    printf(" llData = %lld, sizeof(long long) = %lu\n", llData, sizeof(llData));
    printf(" ucData = %u, sizeof(uint8_t) = %lu\n", ucData, sizeof(ucData));
    printf(" usData = %u, sizeof(uint16_t) = %lu\n", usData, sizeof(usData));
    printf(" uiData = %u, sizeof(uint32_t) = %lu\n", uiData, sizeof(uiData));
    printf(" ulData = %llu, sizeof(uint64_t) = %lu\n", ullData, sizeof(ullData));

    return 0;
}

运行结果:

在这里插入图片描述

相关文章
|
18天前
|
存储 算法 安全
基于红黑树的局域网上网行为控制C++ 算法解析
在当今网络环境中,局域网上网行为控制对企业和学校至关重要。本文探讨了一种基于红黑树数据结构的高效算法,用于管理用户的上网行为,如IP地址、上网时长、访问网站类别和流量使用情况。通过红黑树的自平衡特性,确保了高效的查找、插入和删除操作。文中提供了C++代码示例,展示了如何实现该算法,并强调其在网络管理中的应用价值。
|
1月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
59 8
|
2月前
|
自然语言处理 编译器 Linux
|
2月前
|
设计模式 安全 数据库连接
【C++11】包装器:深入解析与实现技巧
本文深入探讨了C++中包装器的定义、实现方式及其应用。包装器通过封装底层细节,提供更简洁、易用的接口,常用于资源管理、接口封装和类型安全。文章详细介绍了使用RAII、智能指针、模板等技术实现包装器的方法,并通过多个案例分析展示了其在实际开发中的应用。最后,讨论了性能优化策略,帮助开发者编写高效、可靠的C++代码。
48 2
|
1月前
|
安全 编译器 C++
C++ `noexcept` 关键字的深入解析
`noexcept` 关键字在 C++ 中用于指示函数不会抛出异常,有助于编译器优化和提高程序的可靠性。它可以减少代码大小、提高执行效率,并增强程序的稳定性和可预测性。`noexcept` 还可以影响函数重载和模板特化的决策。使用时需谨慎,确保函数确实不会抛出异常,否则可能导致程序崩溃。通过合理使用 `noexcept`,开发者可以编写出更高效、更可靠的 C++ 代码。
37 0
|
1月前
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
77 0
|
2月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
2月前
|
Dart 安全 编译器
Flutter结合鸿蒙next 中数据类型转换的高级用法:dynamic 类型与其他类型的转换解析
在 Flutter 开发中,`dynamic` 类型提供了灵活性,但也带来了类型安全性问题。本文深入探讨 `dynamic` 类型及其与其他类型的转换,介绍如何使用 `as` 关键字、`is` 操作符和 `whereType&lt;T&gt;()` 方法进行类型转换,并提供最佳实践,包括避免过度使用 `dynamic`、使用 Null Safety 和异常处理,帮助开发者提高代码的可读性和可维护性。
109 1
|
9天前
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
49 18
|
9天前
|
存储 编译器 数据安全/隐私保护
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。​ 相关知识 类的声明和使用。 类的声明和对象的声明。 构造函数和析构函数的执行。 一、类的声明和使用 1.类的声明基础 在C++中,类是创建对象的蓝图。类的声明定义了类的成员,包括数据成员(变量)和成员函数(方法)。一个简单的类声明示例如下: classMyClass{ public: int
34 13

推荐镜像

更多