新手对于书上的例题迷茫,请

新手对于书上的例题迷茫,请高手指点!
在谭版C语言的树中在第三章关于自增自减变量有怎么个例题,我是怎么做都和书上的结果不一样,
main(){
    int   i=8;
    printf( "%d\n ",++i);
    printf( "%d\n ",--i);
    printf( "%d\n ",i++);
    printf( "%d\n ",i--);
    printf( "%d\n ",-i++);
    printf( "%d\n ",-i--);
  }    
书上说:i的初值为8,第2行i加1后输出故为9;第3行减1后输出故为8;第4行输出i为8之后再加1(为9);第5行输出i为9之后再减1(为8)   ;第6行输出-8之后再加1(为9),第7行输出-9之后再减1(为8)
而我实际运行的结果是:9   8   8   9   -8   -9   (有几个都和书上说的不一样,不信大家可以自己运行下)
还有一个例题
main(){
    int   i=5,j=5,p,q;
    p=(i++)+(i++)+(i++);
    q=(++j)+(++j)+(++j);
    printf( "%d,%d,%d,%d ",p,q,i,j);
书上的结果是:这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q   的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8
对于书上的解释,p的值我很容易理解,但是q的值我实际的输出结果为:22(感到很困惑,怎么会是22呢)我又   printf( "%d ",(++j)+(++j)+(++j)+(++j));运行结果居然是   43   (更不知道怎么解释了),请高手指点迷津!!谢谢先,

------解决方案--------------------
P=(i++)+(i++)+(i++)
==========
至于这种属于无意义的问题,不同编译器有不同的实现方式
------解决方案--------------------
抓住重点学清了那就好了,其他的无需多的纠缠,okokok
------解决方案--------------------
没意义,不要管他,今后写程序不会用这么长的
------解决方案--------------------
建议换书。标准的未定义行为,还能被他讲得那么信誓旦旦的,真要崇拜他。
换《C How to Programming》