电子说
前言
在百度百科上看到实现 itoa 函数的源代码,里面有一行代码引起了我的兴趣:
1unsigned unum;
通常,我们定义无符号的一个变量,一般采用如下方式:
1unsigned char variable;
2unsigned short variable;
3unsigned int variable;
那么省略 unsigned 后面的数据类型关键字,直接使用 unsigned 定义变量,这个变量会是什么类型的呢?我查了一下,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int,是不是这样呢,我们可以写个简单的代码验证一下。
测试
我测试的gcc编译器版本为 7.5.0 :
测试代码如下:
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 类型。
全部0条评论
快来发表一下你的评论吧 !