Есть ли у вас <stdlib.h>
в комплекте?
Я могу воспроизвести на MacOS X, если опустить <stdlib.h>
.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned long long ns = strtoll("123110724001300", (char **)NULL, 10);
printf("%llu\n", ns);
return(0);
}
Опусти заголовок, я получу твой результат.
Включите шапку, я получу правильный ответ.
И 32-битные, и 64-битные компиляции.
Как отмечено в комментариях, в отсутствие объявления для strtoll () компилятор обрабатывает его как функцию, возвращающую int.
Чтобы увидеть больше того, что происходит, посмотрите на шестнадцатеричные выводы:
123110724001300 0x00006FF7_F2F8DE14 Correct
18446744073490980372 0xFFFFFFFF_F2F8DE14 Incorrect
Подчеркивание, вставленное вручную ...