【问题标题】:difference between unsigned short int and unsigned shortunsigned short int 和 unsigned short 之间的区别
【发布时间】:2013-04-29 16:17:28
【问题描述】:

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

unsigned short int x1;
unsigned short x2;

最后,如果有区别,请问如何将它们分别投射到彼此?

【问题讨论】:

  • 没有区别。

标签: c unsigned


【解决方案1】:

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

6.7.2.2:

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

  • ...
  • shortsigned shortshort intsigned short int
  • unsigned short,或unsigned short int
  • ...

6.7.2.5:

每个以逗号分隔的多重集都表示相同的类型 ...

【讨论】:

  • 重要的是要注意它们相同的事实并不能保证它们的大小。它们可以是 2 个字节、4 个字节、100 个字节等等。只要它们不超过int
  • 如果您想链接到更方便的 C11 在线副本,请点击此处:port70.net/~nsz/c/c11/n1570.html
  • 我会将您的链接保留在评论中,但会将指向 PDF 的链接保留在答案中。 pdf 的好处是您可以下载并将其放在桌面上,并且更易于访问。不过链接很好,引用肯定更好。
  • @Daniel 如果我通过套接字连接发送短裤,我会遇到平台问题吗?
【解决方案2】:

仅使用short 是写short int 的简写(没有双关语)方式。只是 longlong int 的简写。

【讨论】:

    【解决方案3】:

    两者没有区别。

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        没有区别。试试sizeof 运算符:

        main()
        {
          unsigned short int x1;
          unsigned short x2;
        
          printf("%d/%d\n", sizeof x1, sizeof x2);
        }
        

        【讨论】:

        • 就像我在另一条评论中所说:即使它们相同(并且您的答案是正确的),您也无法举一个例子来证明什么。 11 是质数,但这并不能使所有奇数成为质数。顺便说一句,intunsigned int 的大小也一样,但它们不一样。
        • 此外,类型的大小可以在不同的实现之间改变。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        • 2013-09-03
        • 2017-06-20
        • 2015-01-20
        • 1970-01-01
        相关资源
        最近更新 更多