【发布时间】:2013-04-29 16:17:28
【问题描述】:
c 中的 unsigned short int 和 unsigned short decleration 之间有区别吗?如果有,请问是什么?我尝试在网上寻找,但找不到任何有价值的东西。
unsigned short int x1;
unsigned short x2;
最后,如果有区别,请问如何将它们分别投射到彼此?
【问题讨论】:
-
没有区别。
c 中的 unsigned short int 和 unsigned short decleration 之间有区别吗?如果有,请问是什么?我尝试在网上寻找,但找不到任何有价值的东西。
unsigned short int x1;
unsigned short x2;
最后,如果有区别,请问如何将它们分别投射到彼此?
【问题讨论】:
来自C11 [PDF](省略了无关部分)(强调我的):
6.7.2.2:
每个声明的声明说明符中应至少给出一个类型说明符, 并在每个结构声明和类型名称的说明符限定符列表中。每个列表 类型说明符应为以下多重集之一(用逗号分隔,当有 每个项目不止一个多重集);类型说明符可以以任何顺序出现,可能 与其他声明说明符混合在一起。
- ...
short、signed short、short int或signed short intunsigned short,或unsigned short int- ...
6.7.2.5:
每个以逗号分隔的多重集都表示相同的类型 ...
【讨论】:
int。
仅使用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 的大小也一样,但它们不一样。