C 如果是';零

C 如果是';零,c,C,我不明白如果I已经是零,为什么我们要将它乘以10。 因此,如果有人能解释为什么我们要使用这种类型的表达式来解决这个问题,我将不胜感激。 #包括 主(空) { int n,num=0; printf(“输入任何数字以打印单个设备:”); scanf(“%d”和“&n”); while(n!=0)//répéter指令 { >***num=(num*10)+(n%10);*** `n=n/10` } while(num!=0)//répéter指令 { 开关(数量%10) . . . . . . .

我不明白如果I已经是零,为什么我们要将它乘以10。 因此,如果有人能解释为什么我们要使用这种类型的表达式来解决这个问题,我将不胜感激。

#包括
主(空)
{
int n,num=0;
printf(“输入任何数字以打印单个设备:”);
scanf(“%d”和“&n”);
while(n!=0)//répéter指令
{
>***num=(num*10)+(n%10);***
`n=n/10`
}
while(num!=0)//répéter指令
{
开关(数量%10)
.
.
.
.
.
.
.
.
.
.
num=num/10;
}
}

num
在第一次通过循环时仅为零

假设您输入
6521
。第一次通过循环时,它会

num = (0 * 10) + (6521 % 10);
设置
num=1
。然后将
n
除以10。因此,下一次通过循环时,它会:

num = (1 * 10) + (652 % 10);
设置
num=12
。下一次迭代执行以下操作:

num = (12 * 10) + (65 % 10);
num = (125 * 10) + (6 % 10);
设置
num=125
。下一次迭代执行以下操作:

num = (12 * 10) + (65 % 10);
num = (125 * 10) + (6 % 10);
设置
num=1256

然后循环结束,因为将
n
除以
10
会得到
0


其结果是颠倒输入的数字。

num仅在开头初始化为零。 每次迭代后,其值会根据定义的条件进行更改。 作为一个简化的示例,您可以在for循环中看到,一个变量被初始化为零,然后提供条件并指示其递增或递减(通常),直到条件满足为止。
将变量初始化为零就是给它赋值0。如果不是,它将取内存块的值。

它并不总是零。在第一次迭代之后,它是上一次加法的结果。我知道,先生,只是有一个表达式“(num*10)”,我真的不明白如果“num”的上一个值是零,那么我们为什么要将10乘以0,下次就不会是0。我还不明白,因为我们没有设置任何表达式或函数来更改'num'值,那么它如何能够自行更改。
num=(num*10)+(n%10)更改值。谢谢您,先生,现在我完全了解了它的工作原理。这是一个很好的解释,先生,谢谢您的时间。很高兴听到这个消息。如果有帮助,请考虑投票。