首页 > 其他分享 >浅析C语言之uint8_t / uint16_t / uint32_t /uint64_t

浅析C语言之uint8_t / uint16_t / uint32_t /uint64_t

时间:2023-07-02 18:12:17浏览次数:42  
标签:uint64 __ typedef int uint8 long uint32 浅析

一、C语言基本数据类型回顾

在C语言中有6种基本数据类型:short、int、long、float、double、char

1、数值类型

  • 1)整型:short、int、long
  • 2)浮点型:float、double

2、字符类型:char

二、typedef回顾

typedef用来定义关键字或标识符的别名,例如:

typedef double wages;
typedef wages salary;

 



三、uint8_t\uint_16_t\uint32_t\uint64_t

1、这些类型的来源这些数据类型中都带有_t, _t 表示这些数据类型是通过typedef定义的,而不是新的数据类型。也就是说,它们其实是我们已知的类型的别名。

2、使用这些类型的原因:方便代码的维护。比如,在C中没有bool型,于是在一个软件中,一个程序员使用int,一个程序员使用short,会比较混乱。最好用一个typedef来定义一个统一的bool:

typedef char bool;

 


在涉及到跨平台时,不同的平台会有不同的字长,所以利用预编译和typedef可以方便的维护代码。

 

3、这些类型的定义:

在C99标准中定义了这些数据类型,具体定义在:/usr/include/stdint.h ISO C99: 7.18 Integer types

#ifndef __int8_t_defined  
# define __int8_t_defined  
typedef signed char             int8_t;   
typedef short int               int16_t;  
typedef int                     int32_t;  
# if __WORDSIZE == 64  
typedef long int                int64_t;  
# else  
__extension__  
typedef long long int           int64_t;  
# endif  
#endif  
  
  
typedef unsigned char           uint8_t;  
typedef unsigned short int      uint16_t;  
#ifndef __uint32_t_defined  
typedef unsigned int            uint32_t;  
# define __uint32_t_defined  
#endif  
#if __WORDSIZE == 64  
typedef unsigned long int       uint64_t;  
#else  
__extension__  
typedef unsigned long long int  uint64_t;  
#endif  

 

 


4、格式化输出:

uint16_t %hu
uint32_t %u
uint64_t %llu

 


5 、uint8_t类型的输出:
注意uint8_t的定义为

typedef unsigned char uint8_t;

uint8_t实际上是一个char。所以输出uint8_t类型的变量实际上输出其对应的字符,而不是数值。例:

uint8_t num = 67;
cout << num << endl;

输出结果:C

 


参考:

http://blog.sina.com.cn/s/blog_9dcc0fb90101gdvo.html
http://blog.csdn.net/mrlixirong/article/details/48416533
http://blog.csdn.net/kiddy19850221/article/details/6655066

标签:uint64,__,typedef,int,uint8,long,uint32,浅析
From: https://www.cnblogs.com/hoiday/p/17521117.html

相关文章

  • 边缘云特点、应用实践和发展趋势浅析
    本文分享自天翼云开发者社区《边缘云特点、应用实践和发展趋势浅析》,作者:JinnyPeng随着物联网、人工智能和5G技术的快速发展,云计算正在迎来一场革命性的变革。在传统云计算架构中,数据和计算主要集中在大型数据中心中进行处理,这在某些场景下存在一定的局限性。为了满足实时性、......
  • springboot mybatis mapper 注入原理浅析
    spring+mybatis是我们常用的开发组合,一般情况,我们只需要写一个Mapper接口 加上@Mapper注解就可以使用了,那么他的工作原理是什么呢?标准mybatis调用应该是这样的流程1//读取配置2InputStreamconfig=Resources.getResourceAsStream("mybatis-config.xml");3//根......
  • 浅析住宅小区电动车充电桩的电气设计与平台管理系统
    罗轩志安科瑞电气股份有限公司 上海嘉定201801摘要:根据目前对于新能源汽车发展规划及政策,以及国内外充电设施的主要类型和技术参数。论述地下车库电动汽车充电桩的供配电系统的设计及设计过程中需要注意的一些问题。关键词:充电桩;地下车库;供配电设计;负荷计算0引言新能源汽车的......
  • 浅析 Jetty 中的线程优化思路
    作者:vivo互联网服务器团队-WangKe本文介绍了Jetty中ManagedSelector和ExecutionStrategy的设计实现,通过与原生select调用的对比揭示了Jetty的线程优化思路。Jetty设计了一个自适应的线程执行策略(EatWhatYouKill),在不出现线程饥饿的情况下尽量用同一个线程侦测I/O事......
  • 浅析AI深度学习计算机视觉技术在智能监控领域的场景应用
    计算机视觉技术是一种模拟人类视觉功能的技术,通过数字图像处理、模式识别、机器学习等方法,自动分析和理解图像和视频中的信息,从而实现图像和视频的自动理解、识别、分类、检测和跟踪等任务。计算机视觉技术的使用场景非常广泛,包括但不限于以下几个方面:1)智能监控:利用计算机视觉技......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-4-playwright等待浅析
    1.简介在介绍selenium的时候,宏哥也介绍过等待,是因为在某些元素出现后,才可以进行操作。有时候我们自己忘记添加等待时间后,查了半天代码确定就是没有问题,奇怪的就是获取不到元素。然后搞了好久,或者经过别人的提示才恍然大悟没有添加等待时间。而playwright为了避免我们犯这么low的......
  • 字节码原理浅析 —— 基于栈的执行引擎
    字节码是运行在JVM上的,为了能弄懂字节码,需要对JVM的运行原理有所了解。这篇文章将以栈帧为切入点理解字节码在JVM上执行的细节。虚拟机虚拟机常见的实现方式有两种:Stackbased的和Registerbased。比如基于Stack的虚拟机有HotspotJVM、.netCLR,这种基于Stack实现......
  • 浅析LRC歌词文件
    浅析LRC歌词文件 [时间:2018-12][状态:Open][关键词:字幕,LRC,歌词,lyric,文件格式]0引言几年前(2010年左右),网络音乐流行与免费的时代,网上有大量的mp3,使用比较常见的播放器,比如酷狗、酷我、千千静听等,下载mp3时总会附带下载一个同名但以lrc为后缀的文本文件,在早几年你可能还会遇......
  • 浅析GeoServer CVE-2023-25157 SQL注入
    简介GeoServer是一个开源的地图服务器,它是遵循OpenGISWeb服务器规范的J2EE实现,通过它可以方便的将地图数据发布为地图服务,实现地理空间数据在用户之间的共享。影响版本geoserver<2.18.72.19.0<=geoserver<2.19.72.20.0<=geoserver<2.20.72.21.0<=geoserver<2.21.42.22.0<=......
  • 浅析容器运行时
    1、概述首先要明确一个知识点就是容器本质上就是一个特殊的进程,通过Namespace实现资源(网络、文件系统等)隔离,通过Cgroups实现资源(CPU、内存)限制,让我们使用起来就感觉像在操作虚拟机一样,但其和虚拟机有本质上的区别,那就是容器和宿主机是共享同一个内核的。为了将我们的应用进程......