我是新来的,也是Objective C的新手。我尝试了一些示例while循环程序,还有一些我根本无法理解的东西。 我已经设置了所有变量" v"," u"和"余下"是无符号整数。
unsigned int v, u, temp;
NSLog(@"Please key in 2 non-negative integers");
scanf("%u %u", &u, &v);
while (v != 0) {
temp = u % v;
u = v;
v = temp;
NSLog(@"Value of v is %u, value of u is %u, value of temp is %u", v, u, temp);
}
}
return 0;
}
我不理解的部分是" temp = u%v"。 我知道"%"运算符用于通过v找到u除法的余数,然后将其赋值给变量" temp"。
首先,我尝试了值150和35,它们分别存储在变量u和v中。程序执行时," temp"被分配值10(在第一个循环中),因为150/35(u / v)剩下10个。
我决定改变价值观;现在我分配了你和v分别为35和150。 我期待" temp"为0是因为35/150(u / v)根本没有余数,因为它是一个分数。但不知何故," temp"被分配了值35(在第一个循环中),我只是找不到原因。
为什么" temp"分配值35?我试图谷歌"其余的35除以150"弄清楚为什么%运算符给了我35作为余数,但我找不到任何答案。 谢谢。
答案 0 :(得分:3)
%
不执行除法。对于无符号数,将较小数字除以较大数字的余数始终是较小的数字本身。
回想一下
Dividend = Divisor * Quotient + Remainder
当Divisor
大于Dividend
时,Quotient
为零。因此
Dividend = Remainder