#include <stdio.h>
void main()
{
int i=3,k;
k=(i++)*(++i)+(i--)*(--i);
printf(“%d\n”,k);
}
在TC2·0运行的结果是18,在VC6·0的结果却是25,为何?
第五行语句修改为:
k=(i--)*(--i)+(i++)*(++i);
在TC2·0运行仍是18,VC6·0运行却是13。
第五行修改为:
k=(i++)*(++i)+(i--);
TC2·0运行是20,VC6·0运行也是20
第五行修改为:
k=(i++)*(++i)+(--i);
TC2.0运行是12,VC6.0的结果是19
第五行修改为:
k=(i++)*(++i);
TC2.0和VC6.0都打印为16
百思不得其解,求指教!
首先优先级和结合性与编译器本身无关,只和标准有关
其次,你这里的问题和优先级以及结合性无关,这是求值顺序问题,而C语言中没有规定求值顺序,故实际上是无解的
温馨提示:答案为网友推荐,仅供参考