mbed 错误的 long int 解析
Mbed wrong long int parsing
#include <stdio.h>
int main()
{
const char* s = "Number: 420604953084";
long number;
sscanf(s, "Number: %ld", &number);
printf("Result: %ld", number);
return 0;
}
此代码在桌面上使用 c++11(或者,例如 here)正确编译returns:
Result: 420604953084
但是用 ARM Mbed 6.6 编译的结果是:
(#include <mbed.h>)
...
Result: -301941924
有人知道吗?不幸的是,这些东西在 Mbed 中根本没有记录。
如果您的 long 类型在您的编译器上是 4 字节。我觉得get和error是合理的
请尝试 unsigned long long 和格式代码 "lld".
#include <stdio.h>
int main()
{
const char* s = "Number: 420604953084";
long number;
sscanf(s, "Number: %ld", &number);
printf("Result: %ld", number);
return 0;
}
此代码在桌面上使用 c++11(或者,例如 here)正确编译returns:
Result: 420604953084
但是用 ARM Mbed 6.6 编译的结果是:
(#include <mbed.h>)
...
Result: -301941924
有人知道吗?不幸的是,这些东西在 Mbed 中根本没有记录。
如果您的 long 类型在您的编译器上是 4 字节。我觉得get和error是合理的
请尝试 unsigned long long 和格式代码 "lld".