首页 > 解决方案 > Mbed 错误的 long int 解析

问题描述

    #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 编译(或者,例如这里)正确返回:

Result: 420604953084

但是使用 ARM Mbed 6.6 编译的结果是:

(#include <mbed.h>)
...
Result: -301941924

有人有线索吗?不幸的是,这些东西在 Mbed 中根本没有记录。

标签: c++mbed

解决方案


如果您的编译器上的long类型是 4 字节。我认为获取和错误是合理的。

请尝试unsigned long long和格式代码"lld"


推荐阅读