********************************************************************************
********************************************************************************2、两个整型数,不准用if 、switch 、?:等判断语句求出两者最大值,说出你的思路,能写出代码更好。
答:利用两数相减的结果的二进制表示中最高位为0或1来解决这个问题。
/********************************************************************** * Compiler: GCC * Last Update: Tue 01 May 2012 07:31:44 PM CST ************************************************************************/ #include <stdio.h> int main(int argc, char **argv) { int a = 3, b = 4; int m[2]; int bigger; m[0] = a; m[1] = b; bigger = m[((a-b)>>31) & 1]; printf("%d\n", bigger); return 0; }
如果a<b,则a-b的二进制表示中最高位为1,(a-b)>>31 = 1;bigger = m[1];
********************************************************************************
3、
/********************************************************************** * Compiler: GCC * Last Update: Tue 01 May 2012 07:31:44 PM CST ************************************************************************/ #include <stdio.h> int func(int i,int n) { return (i<n && printf("%d\n",i)) && !func(i+1,n) || printf("%d\n",i); } int main(int argc, char **argv) { func(4, 8); return 0; }仔细观察一下就可以发现return始终返回1。
运行结果:
4
5
6
7
8
7
6
5
4
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************