小编Aks*_*sel的帖子

在ARM上将uint64_t和long混合使用会产生奇怪的结果

在uint64_t和long的混合上使用算术会在arm(C ++编译器)上产生不需要的结果。相同的代码可以在x86上正常工作。

如果将long替换为uint64_t,则它将按预期工作。

Armv7编译器是C ++(Debian 6.3.0-18 + deb9u1)6.3.0 20170516

这里的代码也:http : //cpp.sh/2xrnu

int main()
{
    uint64_t x = 1000UL * 60 * 60 * 24 * 31;
    int i1 = 31;
    long l2 = 1000 * 60 * 60 * 24;
    uint64_t u2 = 1000 * 60 * 60 * 24;
    std::cout << "x        : " << x << std::endl;
    std::cout << "i1       : " << i1 << std::endl;
    std::cout << "l2       : " << l2 << std::endl;
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ arm uint64 armv7

1
推荐指数
1
解决办法
52
查看次数

标签 统计

arm ×1

armv7 ×1

c++ ×1

uint64 ×1