类似d1>d2?d1:d2;的语句怎样理解?
例如在:如果一个函数返回了引用,那么该函数的调用也可以被赋值。这里有一函数,它拥有两个引用参数并返回一个双精度数的引用:
double &max(double &d1,double &d2)
{
return d1>d2?d1:d2;
}
当中,d1>d2?d1:d2;可以理解为:
if(d1>d2) return d1;else if return d2; 唯一的一个三目运算符,这个例子用的d1,d2,不是表达式,还不算复杂 水一发~~~~~~~~~~~~~~~~~~ d1>d2?d1:d2翻译成句子是
if(d1 > d2)
return d1;
else
return d2;
记住运算符的优先级,就知道什么先算,什么后算了。这个表达式,大于号“>”的优先级高于条件运算符“?:”,因此先判断d1>b2,在决定计算结果是d1还是d2。 本帖最后由 hapro 于 2015-7-5 00:11 编辑
hapro 发表于 2015-7-5 00:02
记住运算符的优先级,就知道什么先算,什么后算了。这个表达式,大于号“>”的优先级高于条件运算符“?:” ...
BTW,如果是CPP,这个函数可以写成个模板了。
template<type T>
T max(T v1, T v2)
{
return v1>v2 ? v1 : v2;
}
这样,各种基本数据类型可直接使用之。
另外,对于int、double之类的基本数据类型,如果不需要改动传入参数的值,可以不用&符号来传引用,感觉没啥意义。
PS.
当然,如果是想有下列这样的语法糖
max(x,y)+=1.0;
直接能让x或y中间较大的变量增加1.0而不需其他赋值,可以用原帖中的定义方式。
页:
[1]