繁体   English   中英

在32位应用程序中使用uint64_t

[英]Using uint64_t in 32 bit application

由于某些库,我必须以32位编译我的应用程序,但我需要使用超过32位类型的最大数量的整数变量。 因此,例如,如果我尝试使用uint64_t我会在2147483647获得溢出。

我认为可以在32位应用程序中使用64位整数变量,所以我在这里错过了什么? 我是否必须包含一些特定的标题或者我必须设置一些选项吗? 使用VS17。

编辑:

我做了一些测试,在这个示例程序中,我可以重现我的溢出问题。

#include <iostream>

int main()
{
    uint64_t i = 0;

    while (true)
    {
        std::printf("%d\n",i);
        i += (uint64_t)10000;
    }
    return 0;
}

错误在这里:

 std::printf("%d\\n",i); ^^ 

您使用了错误的格式说明符,因此未定义程序的行为。 %d用于signed int 你需要使用

std::printf("%" PRIu64 "\n",i);

PRIu64<cinttypes>声明。

PS你还没有包含声明std::printf的头文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM