找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3338|回复: 5

类似d1>d2?d1:d2;的语句怎样理解?

[复制链接]
发表于 2014-3-26 22:21:57 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
例如在:
如果一个函数返回了引用,那么该函数的调用也可以被赋值。这里有一函数,它拥有两个引用参数并返回一个双精度数的引用:
  double &max(double &d1,double &d2)
  {
  return d1>d2?d1:d2;
  }
 

当中,d1>d2?d1:d2;可以理解为:
if(d1>d2) return d1;else if return d2;
回复

使用道具 举报

发表于 2014-3-27 21:09:00 | 显示全部楼层
唯一的一个三目运算符,这个例子用的d1,d2,不是表达式,还不算复杂
回复 赞! 靠!

使用道具 举报

发表于 2014-4-3 23:41:07 | 显示全部楼层
水一发~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

发表于 2014-12-12 21:19:09 | 显示全部楼层
d1>d2?d1:d2翻译成句子是
if(d1 > d2)
    return d1;
else
   return d2;


回复 赞! 靠!

使用道具 举报

发表于 2015-7-5 00:02:28 | 显示全部楼层
记住运算符的优先级,就知道什么先算,什么后算了。这个表达式,大于号“>”的优先级高于条件运算符“?:”,因此先判断d1>b2,在决定计算结果是d1还是d2。
回复 赞! 靠!

使用道具 举报

发表于 2015-7-5 00:04:53 | 显示全部楼层
本帖最后由 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而不需其他赋值,可以用原帖中的定义方式。
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-21 21:12 , Processed in 0.032707 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表