C语言中自加(减)运算符使用的一个“疑问”

Author: 湖南 颜红武 Date: 1996-11-01

        ++i,--i
        i++,i--
        其中前两种是先加(减)后使用,后两种则是先使用后加(减)。
        但对于i=3时:
        表达式(i++)+(i++)+(i++)的值为多少,各种教材说法互不统一,有的认为是(如,潭浩强编著《C语言程序设计》清华大学出版社1991年版)。也有的认为是12(如:王森主编《C语言程序设计》电子工业出版社1995年版)。到底哪一个说法正确呢?笔者就上述问题编写了一个简单的程序在Tubro C上运行,程序如下:
        main()
        {int i,k;
        i=3;
        k=(i++)+(i++)+(i++);
        printf("k=%d,i=%d\n",k,i);
        i=3;
        printf("k=%d,i=%d\n",(i++)+(i++)+(i++),i);
        }
        运行结果则是:
        k=9,i=6
        k=12,i=3
        由此可知两本教材说明的结果都有出入,并非在所有的情况下,其值保持不变。
        同理:i=3时;
        (++i)+(++i)+(++i)表达式的值有时取15有时取18
        因此,读者在使用时应特别注意。