Очевидно, никто не придумал мультиплатформенное * решение для за десятилетие с [2008 года], поэтому я добавлю свое ?. Плз upvote. (Шучу. Мне все равно.)
Решение: lltoa()
Как использовать:
#include <stdlib.h> /* lltoa() */
// ...
char dummy[255];
printf("Over 4 bytes: %s\n", lltoa(5555555555, dummy, 10));
printf("Another one: %s\n", lltoa(15555555555, dummy, 10));
Пример OP:
#include <stdio.h>
#include <stdlib.h> /* lltoa() */
int main() {
unsigned long long int num = 285212672; // fits in 29 bits
char dummy[255];
int normalInt = 5;
printf("My number is %d bytes wide and its value is %s. "
"A normal number is %d.\n",
sizeof(num), lltoa(num, dummy, 10), normalInt);
return 0;
}
В отличие от строки формата печати %lld
, она работает для меня в 32-битном GCC в Windows.
*) Ну, почти мультиплатформенный. В MSVC вам, очевидно, нужно _ui64toa()
вместо lltoa()
.