【发布时间】:2017-07-31 08:46:30
【问题描述】:
我正在尝试将存储在 c 字符串中的数字转换为 long int。但我没有得到预期的输出:
char str[] = "987654321012345";
long int num ;
num = 0;
//num = atol(str);
num = strtol(str, (char **) NULL, 10);
printf("%ld", num);
输出:821493369
gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-16) 你能告诉我我在这里做错了什么吗?谢谢。
【问题讨论】:
-
您确定
long足够大吗?你是 64 位系统吗?也许您应该使用long long、strtoll和"%lld"? -
是的,我使用的是 64 位拱门。我已经尝试过使用 strtoll 并且结果是一样的。
-
有什么问题?在我看来fine 和
long long -
我使用 gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-16) 得到输出 821493369 而不是 987654321012345
-
sizeof(long)和sizeof(long long)报告什么?一个或两个都说8?那么你应该没有问题。你还记得把你的数据类型改成long long吗?并将printf格式改为"%lld"?
标签: c linux string long-integer