单选题 关于下列三段代码说法正确的是______。
int max (int a, int b) int max (int a, int b) int max(int a, int b)
{ { {
if(a-b>0) if(a>b) if(-a<-b)
return a; return a; return a;
else else else
return b; return b; return b;
} } }
  • A.三段代码都是正确的
  • B.有两段是正确的,一段是错误的
  • C.有一段是正确的,其余都是错误的
  • D.三段代码都有错误
【正确答案】 C
【答案解析】[解析] 第一段代码是错误的,两个int型变量相减可能产生溢出,所以不能用表达式(a-b>0)来代替(a>b),甚至不能用表达式(-b<-a)来替换。因为在二进制补码表示中负数和正数的范围是不对称的,所以第三段代码也是错误的。只有第二段代码才是正确的。