gpt4 book ai didi

C 取模返回负数

转载 作者:行者123 更新时间:2023-12-04 10:36:01 25 4
gpt4 key购买 nike

我的数据类型是 unsigned __int128 data; 所以我认为这不是类型问题,但我不知道为什么会这样

#include <stdio.h>

int main(int argc, char *argv[]) {
unsigned __int128 z = 1911602146;
unsigned __int128 n = 4003562209;

//case 1
unsigned __int128 result = fmod((pow(z, 2) * 2), n);
printf("%d\n", result);

//case 2
unsigned __int128 result_2 = fmod(pow(z, 2), n);
printf("%d\n", result_2);
}

返回:

-669207835 => this is the correct option and it should be 7629321670
-480306461

最佳答案

printf("%d\n", result);
// ^^

%d 需要一个 int。您传递给它的是 unsigned __int128,这会导致未定义的行为。最有可能的是,printf 参与了 result 的表示并将其解释为 int

我不知道正确的格式说明符是什么,但您应该找到正确的格式说明符并使用它。此外,您不应该对数据使用浮点函数;你在那里失去了精度。

关于C 取模返回负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620842/

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