C语言菜鸟问题!恳请高手帮忙解答!!

来源:百度知道 编辑:UC知道 时间:2024/05/12 00:49:03
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);
}
这是谭浩强C语言教材中的一个例子。这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。

p和i容易理解!可是"q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算"是为什么呢?还有在VC6.0中运行这个程序得到的答案跟上面给的不一样这又是怎么回事呢??
q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算

这个又是为什么呢?我是自学的所以很迷茫啊!!再次求教谢谢!!

是这个问题,就是输出的时候计算按j-i-q-p顺序,输出的时候是正常的顺序。

Turbo C是自右至左的运算,而VC6.0是自左至右的运算,运算的顺序不同,结果当然不同了!你们老师没说过啊?呵呵……

这个问题书上应该说的很清楚了啊

他都说了是自学的了可以理解。