C中整数的大小

可能重复:
int的大小是否取决于编译器和/或处理器?

Integer的大小是依赖于编译器还是依赖于OS或处理器? 如果我在32位机器或64位机器上运行的32位操作系统或64位操作系统上使用gcc怎么办(在这种情况下只有64位操作系统)。

取决于编译器选项
当然这也取决于编译器本身。
但编译器是针对特定的操作系统而制作的,因此它取决于操作系统
和/或
编译器是为特定处理器而制作的,因此它取决于处理器

它取决于编译器,处理器和操作系统的组合。

例如,在64位Intel CPU上,在64位模式下,Windows中long int的大小为4字节,而在Linux和Mac上则为8字节。 int是Intel上所有三个操作系统中的4个字节。

编译器实现者也有一个选择,但通常使用操作系统使用的内容。 但很可能一个拥有所有三个平台的C编译器的编译器供应商决定在这三个平台中使用相同的大小。

当然,在16位CPU上生成int 4字节(尽管可能)是没有意义的。

所以这取决于你提到的所有三件事。

int,long等的大小取决于编译器,但编译器实现者将为特定处理器和/或OS选择最佳大小。

这取决于系统。 系统我指的是处理器和操作系统的任何组合,但它通常绑定到使用中处理器的“自然”整数大小。

Integer的大小是否在编译器或操作系统或处理器上?

是。 它可以取决于任何这些东西。

它实际上由平台ABI定义,它由编译器和运行时库设置,但编译器在不同的OS或体系结构上使用不同的ABI。

C中的int大小和几乎所有其他类型都是实现定义的。 某些编译器可能会在特定平台上提供保证,但这取决于实现。 这不是你应该依赖的