读书人

这个简单程序的输出结果为什么是9?解

发布时间: 2012-02-25 10:01:48 作者: rapoo

这个简单程序的输出结果为什么是9?
#define JFT(x)x*x
main()
{ int a, k=3;
a=++JFT(k+1);
printf( "%d ",a);
}
大家能否看看,谢谢。

[解决办法]
Kenmark(fenix) bigo~
[解决办法]
a = ++k+1*k+1;
->
a=++k+k+1;
这里就有歧义了,计算表达式时表达式前是否对后面部分有影响,如果有
则:
++k 使得k=4返回4
然后+k+1注意这里k已经改变为4所以结果是9
如果“同表达式内前后变量改变不影响”那么就该是8

读书人网 >C语言

热点推荐