scanf can read optimally signed decimal,octal, or hexadecimal input but printf can't output said read input? Or is there some other specifier I'm not aware of and not using.
example code
scanf("%i", &x); //enter 0150 (octal)
printf("%i ",x); //outputs 104(decimal)