代码之家  ›  专栏  ›  技术社区  ›  rudolfdobias

Mbed错误的long int解析

  •  0
  • rudolfdobias  · 技术社区  · 5 年前
        #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 )正确返回:

    Result: 420604953084
    

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

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

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

    1 回复  |  直到 5 年前
        1
  •  2
  •   Mr. Chip    5 年前

    如果你的 长的 类型是编译器上的4字节。我认为得出错误的结论是合理的。

    请试一试 无符号long long 以及格式代码 “法学博士” .