【问题标题】:Is sizeof(unsigned char) also guaranteed to be 1? [duplicate]sizeof(unsigned char) 是否也保证为 1? [复制]
【发布时间】:2015-02-12 10:00:30
【问题描述】:

我认为标题是不言自明的,但格式更好。

sizeof(unsigned char)也保证为1吗?


我不认为这个问题是重复的,因为:

  • C 与 C++ 不同(标签摘录:...It was originally designed as an extension to C, and keeps a similar syntax, but is now a completely different language...)。
  • char 可以是有符号或无符号的。没有理由假设 sizeof(unsigned char) == sizeof(char) 除非你得到标准的保证,因此问题。
  • 即使您将 C 与 C++ 混淆,答案也不会重叠。

【问题讨论】:

  • 好的。但是告诉我,它是如何复制的?
  • @remyabel 我读过它吗?这回答了我的问题,而不是是否存在 sizeof(char) != 1 的机器。
  • @remyabel 当然它可以改变,因为 C 不是 C++。我问的是完全不同的事情。 char 可以签名也可以不签名,不能保证char = unsigned char
  • @remyabel:回答这个问题的另一个问题的答案不是重复的条件。只有当 questions 重复时,它们才是重复的。当然没有理由简单地假设这在 C++ 中是相同的,或者 unsigned charchar 是相同的。
  • @NathanOliver 问题是关于原则的。询问 sizeof(char) 是否始终为 1 并询问 sizeof(char) == sizeof(unsigned char) 是否是一个完全不同的问题。此外,当前的副本是关于 C 的。当您想找到答案时,请查看 C++ 参考而不是 C,因为与流行的看法相反,C 不是 C++ 的子集。标签摘录应该引起您的注意。 cprogramming.com/tutorial/c-vs-c++.html

标签: c++ sizeof


【解决方案1】:

参考:http://en.cppreference.com/w/cpp/language/sizeof

sizeof(char)、sizeof(signed char) 和 sizeof(unsigned char) 总是 返回 1。

【讨论】:

    【解决方案2】:

    是的。

    [expr.sizeof]/1:

    sizeof(char)sizeof(signed char)sizeof(unsigned char)1

    另外,[basic.fundamental]/1:

    charsigned charunsigned char 占用相同的存储量并具有相同的对齐要求

    【讨论】:

    • 是的,这就是我想听到的。来自标准的报价。德克萨斯州!
    猜你喜欢
    • 2019-02-12
    • 2018-03-05
    • 2016-08-16
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多