How about a counter-proposal: when not in POSIX mode, arguments that correspond to numeric conversions in printf could be subject to normal arithmetic evaluation, so that « printf %d '6*7' » will output “42”.
(Yes of course they should be subject to the single evaluation limit, regardless of any shopt to the contrary.) That would include evaluating an empty *expression* as zero. -Martin