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".