先调用getch,赋值运算符是又结合的所以c是和右边的赋值运算符结合,s[++i]=c=getch()等价于s[++i]=(c=getch()),所以上面是先计算s[++i]=的右边部分,即(c=getch()), 这个右边部分又包含赋值表达式,所以先计算该赋值运算符的右边部分即getch()。所以整个复合表达式的计算顺序是先计算getch(),再将返回值赋给c,再将c的值赋给s[++i]。
你代码太乱了,重发下,按写代码那样的形式,这样完全就没法看。
还有就是说明白这个程序时干什么的,写好注释。