这就是运算符号的优先级的问题。
C语言中,非零为真,k=2,所以循环执行2次。
第1次:
s*= ++m/k--; ++m,++在变量左侧,所以先计算m=m+1=4,
k--, --在变量右侧,所以先使用k=2进行m/k=2的计算,然后再k=k-1=1
最后计算s=s*2 = 10
执行第1次循环后:m=4, k=1, s = 10
第2次:
重复上面过程: ++m, m=5;
m/k=5/1=5; k=k-1=0
s= s*5 = 50
执行第2次循环后:m=5, k=0, s = 50
所以,输出结果是:0,5,50