www.bzyk.net > C语言 iF(!A || !B) rEturn A + B

C语言 iF(!A || !B) rEturn A + B

这是程序印刷出错了吧?不然的话,这个程序可真是太高大上了,我等看不懂啊! 它要起到什么作用?

int gcd(int a, int b) { if (!a || !b) return a + b;//a b中有一个为0,就返回a+b if (a > b) return gcd(b, a % b);//这里是a,b都不为0的情况下,递归调用gcd. return gcd(a, b % a); }

答案是:等价 证明如下: 1. a = 0, b = 0时, a || b == 0, !(a || b) == 1, !a && !b == 1 2. a = 0, b = 1时, a || b == 1, !(a || b) == 0, !a && !b == 0 3. a = 1, b = 0时, 和2相同 4. a = 1, b = 1时, a || b == 1, !(a || b) == 0, !a &...

gcd是一个自定义的求最大公约数的函数,利用辗转相除法,return就是把结果返回给函数,gcd函数在函数内部调用自己,可以理解为一个迭代函数

先看 if (a) b++;上面的语句是将a的值与0进行比较,如果a不等于0,则条件为真,则执行b++,也就是说当a的值不等于0的时候才会执行b++。 再看 if (!a) b++在c++中!是逻辑否运算符,与上面的条件判断正好相反,即如果a的值是0,则!a=1,则执行b++,...

区别大了 if (a==b) 只要a和b 相等就为真 if (a=b) 是将b的值赋给a,再判断最终的a, 所以只要b不为0 if (a=b)就使终为真.

它是使用了位运算。实际上,它就等价于: a==0 || b>7

1&&表示逻辑与运算; 2||表示逻辑或运算; 3&&运算优先级高于||运算; 4 举例: (3>2)||(1>2)&&(3>4) =true||false&&false =true||false =true------------1

if(a>b>c) 就是 if((a>b)>c) 先求出a>b的结果,然后这个结果再和c比较,由于a>b的结果不是0就是1,最终就是0或者1与c比较

a>b为真且a除b余0 或者a恒等于b 意思就是a能被b整除的情况下 返回a

网站地图

All rights reserved Powered by www.bzyk.net

copyright ©right 2010-2021。
www.bzyk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com