<<The standard doesn't distinguish between 'run time' and 'compile time'. >> That's a misunderstanding, yes, of course the standard distinguishes between dynamic and static semantics. When you write a printf statement, it does not generate output at compile time, and the standard is pretty clear on this point :-)