printf中的right->left
时间:2010-08-25 来源:wanpengcoder
今天下午写个链栈复习下,测试的时候差点纠结,写了第一个printf,结果输出的和我预想的正好相反。
问题出在printf上,因为printf入栈的顺序是从右向左,所以printf中的表达式从右向左求值。下面是问题代码。
关于printf的详细实现原来详见 http://www.cnblogs.com/wanpeng/archive/2010/08/02/1790586.html
1 #include "stack.h"
2
3 int main(void)
4 {
5 listack *s = init_stack(); /*初始化*/
6 push(s, 'a');
7 push(s, 'b');
8 disp_stack(s); /*打印栈中数据元素*/
9 printf("%c %c %c\n", get_top(s), pop(s), get_top(s));
10 push(s, 'b');
11 printf("%c ", get_top(s));
12 printf("%c ", pop(s));
13 printf("%c\n", get_top(s));
14 return 0;
15 }
~
wanpeng@ubuntu:~/Desktop/datastructure/stack/listack$ ./stack
b a
a b b //一个printf语句得到的结果
b b a //多个printf语句得到的结果