——————————————————C语言谭浩强中的自增问题,求助————————————

发布时间:2024-05-15 15:46 发布:上海旅游网

问题描述:

main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
p=(i++)+(i++)+(i++);这句话没问题,我就不说。

但是q=(++j)+(++j)+(++j);有问题,在Turbo 2.0和Win-TC里q的值为24,这是没错的,不过在"C与C++程序设计学习与实验系统 2008.12"里面q的值竟然是"22",少了2。

这个编译器为什么会这样,简单用一两句回答就行。

问题解答:

编译器的具体计算顺序不同,导致不同结论。前提是两份资料均可靠的话。

一个是把3个(++j)看成是一个,比如设++j为X
那么就是q=X+X+X=3X

还有一种就是一个一个看

q=X+(X+1)+((X+1)+1)

不同的编译器对自增、自减操作的处理机制不一样,

热点新闻