因为 printf 支持不定个数的参数, 参数是通过压栈传递的, 如果从左向右读 (即从左向右求值压栈) 地话, 由于最后一个压栈参数未知, printf 就无法通过栈顶来获取参数信息了, 而要是从右向左地话, 那么最后一个参数是已知的, 即格式化字符串, 这样 printf 才可以通过这个字符串来推出后续的参数类型和内容;这一点对于固定个数的参数的函数来说就无所谓了!
结论:
一:printf函数中的计算是从右向左进行的。
二:printf函数打印输出是从左向右进行的。
二是:我们在写代码时,应该尽量避免类似下面的无确定意义的表达式出现,因为很有可能不同的编译器,会采用不同的理解方式。
转发至微博
转发至微博