The internal order is printfnot defined. Another implementation, the same implementation with different compiler settings, or the same implementation with the same code elsewhere can result in byehi!9.
It returns 9 because it printfreturns the number of characters printed, so the two internal returns printf3 and *is the familiar multiplication operator, giving 9.
source
share