gpt4 book ai didi

c - strtoull "seems"返回错误值

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:07 27 4
gpt4 key购买 nike

基本上,我尝试使用 strtoull 将十六进制字符串转换为 unsigned long long values。这是简单的代码

#include <stdio.h>
#include <string.h>


int main ()
{
unsigned long long val =0;

//printf("sizeof(unsigned long long)=%d\n", sizeof(unsigned long long));

val = strtoull("0x8004298c42ULL",NULL,16);

printf("%llx\n", val);

if ( val == 0x8004298c42ULL)
{
printf("Success\n");
}
return 0;
}

我希望 val 打印 8004298c42 但它打印 4298c428 被砍掉了。我试过没有 0x 也没有 ULL 。但还是一样的结果。为了确保我没有遗漏一些琐碎的 printf 格式说明符,我什至检查了 val 的内容。仍然没有用(即未打印成功)

我想我错过了一些微不足道的东西,但不知道是什么!

最佳答案

函数strtoull()<stdlib.h> 中声明, 不是 <string.h> , 所以编译器认为它返回一个 int ,不是 unsigned long long .

解决方法:确保所有函数在使用前都已声明。如果你使用 gcc , 那么你应该考虑 -Wall 的一些组合, -Wextra , -Wstrict-prototypes , -Wmissing-prototypes , -Wold-style-declaration , -Wold-style-definition-Werror .

关于c - strtoull "seems"返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27197759/

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