在C语言中,unsigned short int和unsigned short声明是否有区别?如果有,请说明是什么?我尝试在网上查找,但没找到任何有价值的信息。
最后,如果有差异,我该如何将它们分别转换成对方呢?
unsigned short int x1;
unsigned short x2;
最后,如果有差异,我该如何将它们分别转换成对方呢?
来自C11 [PDF](省略不相关的部分)(重点在此):
6.7.2.2:
在每个声明中的声明说明符中,以及在每个结构体声明和类型名称的限定符列表中,都必须至少给出一个类型说明符。每个类型说明符列表必须是以下多重集之一(当有多个多重集时用逗号分隔)。类型说明符可以以任何顺序出现,可能与其他声明说明符混合在一起。
- ...
short
、signed short
、short int
或signed short int
unsigned short
或unsigned short int
- ...
6.7.2.5:
逗号分隔的多重集中的每个指定相同的类型……
只使用 short
是写入 short int
的简写方式,而 long
则是写入 long int
的简写方式。
两者没有任何区别。
第二个被认为是int类型,只是简单地被省略了。
它们是同义词。如果你的编译器对它们有不同的处理方式,那么它就是有问题的。
没有区别。尝试使用 sizeof
运算符:
main()
{
unsigned short int x1;
unsigned short x2;
printf("%d/%d\n", sizeof x1, sizeof x2);
}
int
和unsigned int
也有相同的大小,但它们并不相同。 - Shahbaz