C语言中,函数形参从右往左压入堆栈。

所以当执行下面这个函数时:

i = 0;

usart_printf(USART1, “%2d, %2d, %2d”, i, i, i++);

 

将会打印:

01, 01, 00

 

而不是执行完整个函数,再++

表达式,则是先执行完整个表达式自身,再++