C语言学习笔记 : 无符号类型 unsigned 与 unsigned int 是否一样

2024-01-21 07:12

本文主要是介绍C语言学习笔记 : 无符号类型 unsigned 与 unsigned int 是否一样,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

  • 在阅读一些 Linux 内核代码时,偶尔遇到一些定义 ,如下
/*** struct pinctrl_setting_mux - setting data for MAP_TYPE_MUX_GROUP* @group: the group selector to program* @func: the function selector to program*/
struct pinctrl_setting_mux {unsigned group;unsigned func;
};
  • 这里的 unsigned group 是否与 unsigned int group 一致?还是 unsigned long group

测试与验证

  • 基础类型一般用大小来衡量,比如 int 类型,在 32位或 64位平台上,都是 4个字节。而 long 类型,在 32位平台上是 32位,而在 64位平台上,是 64位

  • 可以使用 C 语言的 sizeof 来获取 基础类型的占用多少字节

#include <stdio.h>
#include <stdlib.h>unsigned a;
unsigned int b;
unsigned long c;int main(int argc, char **argv)
{printf("size : unsigned = %ld, %ld\n", sizeof(a), sizeof(unsigned));printf("size : unsigned int = %ld, %ld\n", sizeof(b), sizeof(unsigned int));printf("size : unsigned long = %ld, %ld\n", sizeof(c), sizeof(unsigned long));return 0;
}
  • 可以在 Linux ubuntu 下,直接 gcc 编译,然后运行,当前 ubuntu 是64位的

  • gcc unsigned_demo.c -o unsigned_demo 生成 可执行程序 unsigned_demo

  • 测试结果

size : unsigned = 4, 4
size : unsigned int = 4, 4
size : unsigned long = 8, 8
  • 这里说明, unsigned numunsigned int num 一致,也就是如果只有 unsigned,就是 unsigned int 类型。

  • 这里还有一个小技巧: sizeof 返回值是 size_t 类型,如果打印这个 sizeof 返回的字节数,建议使用 %ld

  • printf("size : unsigned = %ld, %ld\n", sizeof(a), sizeof(unsigned));

小结

  • Linux 内核代码就像是一个【宝藏】,里面有很多未知的各种开发经验、技术积累与技巧,等待深入的去探索。

  • 可以多积累一些技术细节,这样阅读代码不再困惑,对代码实现有个正确、清晰的认识。

这篇关于C语言学习笔记 : 无符号类型 unsigned 与 unsigned int 是否一样的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/628751

相关文章

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.