C语言中,运算符的优先级和结合方向与编译工具有关吗?在不同编译工具下是如何处理的呢?

#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语言中没有规定求值顺序,故实际上是无解的

http://bbs.csdn.net/topics/370153775

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网