三目运算符的先后执行顺序

可以帮忙解释一下为什么这个程序能够做到输出1~100间自身积大于和的数呢?k和s不应该始终相等吗,这个程序为什么是正确的?

int main()
{
    int n,k=1,s=0,m;

    for(n=1;n<=100;n++)
    {
        k=1;

        s=0;

        m=n;

        while (m!=0)
        {
            k*=m%10;
            s+=m%10;
            m/=10;
        }
        if(k>s)
            printf("%d\n",n);
    }
}

m % 10表示取的个位数 , m / 10表示取个位数左边的数
假设n=42进入while
k = 1 * 2; 个位数是2
s =0+2;
m /=10 ;此时取的是个位数m=2左边的数 即4
k=1 * 2 * 4;
s=0+2+4;
m /=10;此时 m=4左边已无数,m=0即结束。
所以当然能判断k和s的大小 并输出这个数n

for循环中嵌入了while循环,当while循环结束后才会开始下一个for循环。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^