unsigned int gcd(unsigned int a,unsigned int b){

问题描述:

unsigned int gcd(unsigned int a,unsigned int b){
while(b^=a^=b^=a%=b);
return a;
}
1个回答 分类:综合 2014-12-06

问题解答:

我来补答
很高兴和您分享学习中的快乐!
这个while条件中.
一、首先我们要理解,^= 以及 %=
这是两个赋值运算符
分别是 ^= 按位异或赋值.例如a^=b意味着将a和b按二进制位逐位进行异或运算后的结果赋值给a.
%= 求模赋值.例如a%=b意味着将a除以b的余数赋值给a.
二、我们要知道运算符的运算顺序
由于赋值运算符都是从右至左的.
所以(b^=a^=b^=a%=b)就应该是
1、进行a%=b运算
2、进行b^=(1中结果)运算
3、进行a^=(2中结果)运算
4、进行b^=(3中结果)运算
最后得到的值若为0,则while循环停止.
希望我的回答能帮助您.
再问: ^ 我居然以为是次方
 
 
展开全文阅读
剩余:2000