(Obj C)如果较小的无符号整数除以较大的无符号整数怎么办?

时间:2014-12-05 15:09:12

标签: objective-c operators arithmetic-expressions

我是新来的,也是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作为余数,但我找不到任何答案。 谢谢。

1 个答案:

答案 0 :(得分:3)

%不执行除法。对于无符号数,将较小数字除以较大数字的余数始终是较小的数字本身。

回想一下

Dividend = Divisor * Quotient + Remainder

Divisor大于Dividend时,Quotient为零。因此

Dividend = Remainder