直接使用unsigned定义变量?

电子说

1.3w人已加入

描述

前言

在百度百科上看到实现 itoa 函数的源代码,里面有一行代码引起了我的兴趣:

1unsigned unum;

通常,我们定义无符号的一个变量,一般采用如下方式:

1unsigned char variable;
2unsigned short variable;
3unsigned int variable;

那么省略 unsigned 后面的数据类型关键字,直接使用 unsigned 定义变量,这个变量会是什么类型的呢?我查了一下,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int,是不是这样呢,我们可以写个简单的代码验证一下。

测试

我测试的gcc编译器版本为 7.5.0 :

gcc编译器

测试代码如下:

1int main(void)
2{
3    unsigned val = 0;
4    printf("unsigned int: %d byten", sizeof(unsigned int));
5    printf("unsigned: %d byten", sizeof(val));
6    return 0;
7}

输出:

1unsigned int: 4 byte
2unsigned: 4 byte

可以看到,在我使用的这个版本的 gcc 编译器下测试,unsigned 后面省略数据类型关键字定义出来的变量,其占用的字节长度与 unsigned int 类型定义的变量占用的字节长度相同,所以在我这个版本的gcc编译器下,unsigned 后省略一个关键字,会认为是unsigned int 类型。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分