C语言中自加(减)运算符使用的一个“疑问” 湖南 颜红武 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 因此,读者在使用时应特别注意。