将负数从 String 转换为 unsigned Long

标签 c printf

我正在尝试将负数从 String 转换为 unsigned long,但是由于“-”符号而得到意外结果。 代码下方

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

main()
{
   char * pValue = "-1234657890000";
    unsigned long ValueLong ;
    sscanf( pValue, "%llu", &ValueLong ) ;
    printf ("%llu",ValueLong);
}

代码显示此值“18446742839051661616”,而不是将“-1234657890000”作为 printf 输出 有什么建议吗?

谢谢

最佳答案

您提供的值不适合 unsigned long(或者至少不能保证适合)。另一点是 -1234567890000 根本不是 unsigned。请改用 long long 并记住文字应以 LL 为后缀,如下所示:

char * pValue = "-1234657890000LL";

关于将负数从 String 转换为 unsigned Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092215/

相关文章:

c++ - 简洁准确的 double 打印

c++: printf 和 wprintf 不能一起工作 (linux)

c - 如何在 C 中的 printf 中写入 .5?

c++ - 算法优化

c - 2种结构声明的区别

c - 将 fscanf/sscanf 字符串传递到结构字段 char[4]

c - 将方法的值存储在数组中而不进行打印和数组比较问题

c - 关于printf(C语言)

c - 为什么我没有初始化它时值不为零?

c/你期望什么行为,最佳实践,信号,线程,进程?