Does sizeof return the number of bytes or the number of octets of a type in C?

后端 未结 4 675
没有蜡笔的小新
没有蜡笔的小新 2021-02-02 12:09

Simply put in C and variants (unlike that wuss java with its virtual machine) the size of primitive types on different targets can vary greatly, and there is really no guarantee

4条回答
  •  忘掉有多难
    2021-02-02 12:58

    Answer: sizeof returns the size of the type in bytes.


    Example: sizeof(char) is 100% guaranteed to be 1, but this does not mean, that it's one octet (8 bits).


    Proved by the standard:

    in 6.5.3.4, point 2:

    The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type. The size is determined from the type of the operand. The result is an integer. If the type of the operand is a variable length array type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an integer constant.

    ...

    When applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1. When applied to an operand that has array type, the result is the total number of bytes in the array) When applied to an operand that has structure or union type, the result is the total number of bytes in such an object, including internal and trailing padding.

    Also, in Section 3.6, point 3:

    A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined

提交回复
热议问题