问题描述
解决方案
?:这是条件运算符,其结合性是从右到左,当其嵌套使用时,应该将最后一个问号与紧靠其右的冒号配对。
所以(((x)<(y)?-1:((x))==((y))?0:1指的是:
(((x))<(y))?-1:(((x))==((y))?0:1)
即如果x<y成立,取-1的值,否则取若((x))==((y))?0:1这部分结果。
解决方案二:
x
x==y 返回0
x>y 返回1
解决方案三:
这是c语言里面的宏定义,对于为什么前后加括号,因为宏定义里的内容会原封不动的加入到程序中,很不智能,会出现优先级的问题。
你所说的宏定义里面用到了三元运算符,虽然又嵌套了一个,但是只要耐心,你就可以明白,你可以试着翻译它成为 if-else形式,熟悉后就一眼看出来了。
分解一下:
if(x<y){
COMPARE(X,Y) =-1;
}else if(x==y){
COMPARE(X,Y) =0;
}else{
COMPARE(X,Y) =1;
}
是不是对着一步步翻译过来,就简单容易多了啊。
不管任何问题,希望你能坚持下来
时间: 2024-09-23 20:21:30