gpt4 book ai didi

c - 长长在 c99

转载 作者:行者123 更新时间:2023-12-03 16:44:47 27 4
gpt4 key购买 nike

在 C99 标准中,他们引入了 long long .这样做的目的是什么?在我(有限的)C 编程经验中,我只见过 4 字节的 int 和 8 字节的 long。例如,从编译器资源管理器:
enter image description here
long已经是 8那么,为什么还要再加一个long long类型?这对编译器/架构有什么影响?

最佳答案

If long is already 8 then, why is it necessary to add another long long type? What does this do to the compiler/architecture?


“如果 long 已经是 8”并不总是正确的,因为存在依赖 32 位的代码 longint作为 32 或 16 位。
需要 long因为 64 位会破坏代码库。这是一个主要问题。

还需要 long保持 32 位(并且没有 long long)将无法访问标准的 64 位整数,因此是 long long 的基本原理.
允许 long因为 32 位或 64 位(或其他)允许转换。
各种函数传入/返回 long喜欢 fseek(), ftell() .他们受益于 long超过 32 位以支持大文件。
推荐做法鼓励更广泛的 long : "用于 size_tptrdiff_t 的类型的整数转换等级不应大于 signed long int除非实现支持足够大的对象以使其成为必要。”这与超过 32 位的内存大小有关。

也许在 future 的实现可能会使用 int/long/long long/intmax_t作为 32/64/128/256 位。
IAC,我看到固定宽度类型 intN_t越来越受欢迎 longlong long .我倾向于使用固定宽度类型或 bool , ( unsigned ) char , int/ unsigned , size_t , ( u ) intmax_t然后离开 signed char , ( unsigned ) short , ( unsigned ) long , ( unsigned ) long long对于特殊情况。

关于c - 长长在 c99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65648198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com