我正在尝试将负数从 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/