gpt4 book ai didi

c++ - 为什么 "long int"与 "int"大小相同?这个修改器到底有没有用?

转载 作者:可可西里 更新时间:2023-11-01 15:38:14 33 4
gpt4 key购买 nike

嗯..我有点'虽然像long/short这样的修饰符扩展/减少了创建变量时分配的内存量,但是......

#include <stdio.h>

#define test_int int
#define long_int long int
#define long_long_int long long int

void main()
{
printf("%i\n", sizeof (test_int)); //output 4
printf("%i\n", sizeof (long_int)); //output 4. Why? wasn't I modified it's size?
printf("%i\n", sizeof (long_long_int)); //output 8
}

由于未知原因,它打印出 intlong int 的大小相同。我使用的是 vc++ 2010 速成版。抱歉,很难在谷歌中找到答案,它总是将 longint 显示为不同的类型。

最佳答案

即使在 64 位系统上,MS 选择将 long 设为 32 位的原因是现有的 Windows API,出于历史原因混合使用了 intlong 用于类似的事情,并且期望这是 s 32 位值(其中一些可以追溯到 Windows 是 16 位系统的时代)。因此,为了将旧代码转换为新的 64 位架构,他们选择将 long 保持在 32 位,以便应用程序混合使用 intlong 在不同的地方仍然可以编译。

C++ 标准中没有任何内容规定 long 应该大于 int(在大多数 32 位系统上肯定不是这样)。所有标准都说 short <= int <= long 的大小 - 而 short 在至少16位,如果内存可用【不一定表示为“应该至少16位”,我认为它提到了取值范围】。

关于c++ - 为什么 "long int"与 "int"大小相同?这个修改器到底有没有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18353168/

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