两个整型数,不准用if 、switch 、?:等判断语句求出两者最大值:
- #include <iostream>
- #include <string>
- using std::string;
- using std::cout;
- using std::endl;
- void main()
- {
- int p[2];
- p[0]=21;
- p[1]=30;
- cout<<p[((unsigned int)(21-30))>>(sizeof(int)*8-1)];
- }
a>b,则(unsigned int)(a-b)的最高位为0,
a<b,则(unsigned int)(a-b)的最高位为1,
在往后移动31为则可得0或则1,