gpt4 book ai didi

c - 如何在 OS X 上强制执行 64 位整数运算?

转载 作者:太空宇宙 更新时间:2023-11-04 00:14:52 25 4
gpt4 key购买 nike

我试图在 OS X 10.5.6 上强制使用 64 位长整数。在 Apple MacBook Intel Core 2 Duo 上运行。这是我的 C 代码:

#include<stdio.h>

int main()
{
long a = 2147483647; /*== 2^32 - 1*/
long aplus1;

printf("a== %d. sizeof(a) == %d \n", a, sizeof(a));

aplus1 = a+1;

printf("aplus1 = %d \n", aplus1);
}

不使用任何开关编译会产生以下结果:

$ gcc testlong.c -o testlong ;./testlong

a== 2147483647. sizeof(a) == 4
aplus1 = -2147483648

使用 -m64 开关编译会产生:

$ gcc testlong.c -o testlong -m64; ./testlong

a== 2147483647. sizeof(a) == 8
aplus1 = -2147483648

所以第二个版本显然使用 64 位存储,但仍然会产生溢出错误,尽管 2^32 应该在 64 位整数的范围内。有什么想法吗?

我更喜欢一个可以从 gcc 选项强制执行的解决方案,而不是要求我更改多行源代码(我的实际问题不是上面的具体示例,而是我需要以更通用的方式强制执行长整数运算情况)。

最佳答案

不仅要使用 long long,还必须相应地更改 printf() 语句。

#include<stdio.h>

int main()
{
long long a = 2147483647; /*== 2^32 - 1*/
long long aplus1;

printf("a== %lld. sizeof(a) == %d \n", a, sizeof(a));

aplus1 = a+1;

printf("aplus1 = %lld \n", aplus1);
}

%lld 是 long longs 的代码。

显然 64 位程序可以将 %d 用于 64 位整数 - 我不知道是否可以将其配置为在此模式下编译。

关于c - 如何在 OS X 上强制执行 64 位整数运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/799884/

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