本文主要是介绍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 num
与unsigned 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 是否一样的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!