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