C语言高手进 这是一个判断回文数的函数 我的问题是 1 .while(m)的字面意思 2.内存中是怎么执行while(m)语

void huiwen(int val)
{
int sum = 0 ,m;

m = val;
while (m)
{

sum = sum * 10 + m%10;
m /= 10;
}

if (sum == val)
printf("这是一个回文数");
else
printf("这不是一个回文数");
}

while(m)是一个循环语句,字面的意思是判断m的值是真还是假,如果m是非0值就是说m为真,就执行while(m)下面{}中的内容,如果m的值为0就是说m为假,就跳过while(m)下面{}中的内容,执行后面的语句例如题目中的if (sum == val)。
假如val的值为31,执行m = val;m就为31,m为非0值所以执行while(m)后面{}中的语句,大括号中最后句是m /= 10;所以执行1次之后m就变成了3了,再将3带入while(m)中,m还是非0值,所以还要执行一次while(m)后面{}中的语句,之后m变成了0,将0带入while(m)中,此时m为0,所以m为假退出while(m)循环,执行后面的if (sum == val)语句。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-09
int sum = 0 ,m; //定义了整形数m,但没有初始化。

m = val; //m值进行初始化,将val的值赋给m。
while (m) //判断m是否等于0。 此时的值m等于val的值不为0,所以得出的
表达式结果为真值
{

sum = sum * 10 + m%10; //计算回文数字
m /= 10; //将m的值除以10,将结果赋值给m。 此处计算完成后
循环体结束回到while处进行执行,判断条件是否成立,
条件成立,继续进入循环体,否则执行循环体之外的语句。
}
相似回答