Mbed неправильный анализ длинного 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 это вообще не задокументировано.


person rudolfdobias    schedule 01.02.2021    source источник


Ответы (1)


Если ваш тип long составляет 4 байта в вашем компиляторе. Считаю разумным получить и ошибку.

Пожалуйста, попробуйте unsigned long long и код формата lld.

person Mr. Chip    schedule 01.02.2021