printf uses ellipsis to pass a list of variable arguments. (Zero) that you see is the second part of your long time, which, as it turns out, is only 0 bits. Set it to 1 <60 ± plus 1 <30, and you will receive a loss of the crash when the 1 <<60 part is interpreted as char *.
The correct solution is to break the three-part number into 10 digits: "verylongvalue% 1 000 000 000" "(very longvalue / 1 000 000 000)% 1 000 000 000" "very longvalue / 1 000 000 000 000 000 000 000".
source share