7

c 中的 unsigned short int 和 unsigned short decleration 之间有区别吗?如果有,请问是什么?我尝试在网上寻找,但找不到任何有价值的东西。

unsigned short int x1;
unsigned short x2;

最后,如果有区别,我该如何分别将它们相互转换?

4

5 回答 5

11

来自C11 [PDF](省略了无关部分)(强调我的):

6.7.2.2:

在每个声明的声明说明符中,以及每个结构声明和类型名称的说明符-限定符列表中,至少应给出一个类型说明符。每个类型说明符列表应为以下多重集之一(当每个项目有多个多重集时,以逗号分隔);类型说明符可以以任何顺序出现,可能与其他声明说明符混合。

  • ...
  • short, signed short, short int, 或signed short int
  • unsigned short, 或者unsigned short int
  • ...

6.7.2.5:

每个逗号分隔的多重集都指定相同的类型......

于 2013-04-29T16:25:51.750 回答
3

只是使用short是一种速记(没有双关语)的写作方式short int。只是 along是 的简写long int

于 2013-04-29T16:19:14.010 回答
3

两者没有区别。

第二个被认为是一个 int 并且被简单地省略。

于 2013-04-29T16:19:48.657 回答
2

它们是同义词。如果你的编译器对它们做了不同的事情,那就坏了。

于 2013-04-29T16:19:14.023 回答
-2

没有区别。试试sizeof运营商:

main()
{
  unsigned short int x1;
  unsigned short x2;

  printf("%d/%d\n", sizeof x1, sizeof x2);
}
于 2013-04-29T16:19:42.233 回答