威虎战机多少关:一道很有意思的c面试题

来源:百度文库 编辑:中财网 时间:2024/07/07 17:01:19
求较小的值,不能用 比较运算符 if-else ?: while for 内嵌汇编 递归 第三方函数
int Min(int a, int b)
{
  //write code here

}

我给的回复是

[cpp] view plaincopy?
  1. #include    
  2.   
  3. // 要求写的函数   
  4. int Min(int a, int b)  
  5. {  
  6.     return (&b)[(a-b)>>31];  
  7. }  
  8.   
  9. // 测试代码   
  10. int main(void)  
  11. {  
  12.     int a = 111;  
  13.     int b = 114;  
  14.     printf("The smaller one of %d and %d is %d\n", a, b, Min(a, b));  
  15.     return 0;  
  16. }  

为什么,你可以自己试试,需要注意的是,因为临时变量a,b都在函数的栈上,所以a,b的地址是连续的