问题描述:
1:在一部分C系统中,++的作用会即时生效,也就是说,例如在(j++)+(j++)+(j++) 中,在执行了第一个j++后,j值会增一,所以在第二个j++时,j值就不再是原来的1而是2了,
2:在另一部分C系统中,三个j++中的j值是相同的,都是1
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);
}
应该用第1种方向做还是第2种方法用,为什么
问题解答:
我用的是VC++6.0
它是第一种效果
他这是告诉你
C语言运行得环境不同
结果会不同
你这个程序在不同环境下运行结果就不同
而不是说函数得关系
呵呵
这告诉你j++和++j的区别,++j先执行完整个语句再加一,j++先自身加一,在执行语句
(j++)+(j++)+(j++) 这个是C语言经典的二义性语句,你说的两种答案没有错对...可以说都对...
因为在电脑里面算式是用树的形式表示的,至于你所用的系统会生成什么样子的树...这个问题比较的无解,尽量不要写这样的语句就是了...
如果想深入了解,可以参考一下机械工业出版社的<编译原理>..