三元运算符-条件(三元)运算符效率问题

条件(三元)运算符 (?:)

条件运算符?: 接受三个操作数,是C# 中唯一的三元运算符。

视情况返回以下两个表达式之一。

test ? expression1 : expression2

test 为 true 时返回的表达式expression1 。可能是逗点表达式。

test 为 false 时返回的表达式expression2 。可能是逗点表达式。

?: 运算符可以用作 if...else 语句的快捷方式。

条件运算符(三元运算符)效率问题

先来看这段代码:

$name = GET('name') != null ? GET('name') : '';

function GET($key)
{
if (isset($_GET[$key]))
{
   $fp = fopen('c.txt','a');
   fwrite($fp, '1-');
   fclose($fp);
   return $_GET[$key];
}

return null;
}

运行后,发现c.txt文件中内容为 1-1-

显然,GET函数执行了两次。

以后还是以这种形式:

$name = GET('name');
$name = $name != null ? $name : '';

虽然代码有些长,但效率相对会小点(如果调用的是个占用内存很大的函数,问题就很明显了)

运算符优先级

时间: 2024-11-03 22:37:51

三元运算符-条件(三元)运算符效率问题的相关文章

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都是很痛苦的事情,但是程序之路这么长,你必须精通的不能再精通一门语言才行(有点说大了哈),但是最起码你要如鱼得水吧,我准备的资料有: JAVA编程思想 深入浅出JAVA 黑马,传智,慕课,极客学院等-的视频 Google搜索 我们既然是重新学一遍,那我们尽量就是用记事本去敲代码好了,这里我用notep

link中??运算符是二元运算符还是三元运算符?为什么它和?:不同?

问题描述 link中??运算符是二元运算符还是三元运算符?为什么它和?:不同? link中??运算符是二元运算符还是三元运算符?为什么它和?:不同? 解决方案 当然是二元运算符.为什么它和?:不同?为什么?就不告诉你. 解决方案二: ??是二元运算符,?是三元运算符.

link中??运算符是二元运算符还是三元运算符?它和?:相比,有什么优势?

问题描述 link中??运算符是二元运算符还是三元运算符?它和?:相比,有什么优势? link中??运算符是二元运算符还是三元运算符?它和?:相比,有什么优势? 解决方案 ?? 就是 ? :的简写 没什么区别和优势,就是个语法糖而已 解决方案二: 没什么区别和优势,就是个语法糖而已 解决方案三: http://www.cnblogs.com/zfanlong1314/archive/2012/02/26/2390456.html

php-多个逻辑或运算符和比较运算符一起使用共同作为条件判断的问题

问题描述 多个逻辑或运算符和比较运算符一起使用共同作为条件判断的问题 <?php $username = "gaolf"; $password = "123456"; $email = "gaolf@brophp.com"; $phone = "010-7654321"; if( $username == "gaolf" && $password == "123456&quo

vb6.0-VB6.0条件判断运算符,eqv的作用和使用的场合

问题描述 VB6.0条件判断运算符,eqv的作用和使用的场合 VB6.0条件判断运算符,eqv的作用和使用的场合?一般写程序什么时候才会用到eqv?请大神讲解 解决方案 用于逻辑判断,eqv是逻辑等价的意思.

javascript-多个逻辑或运算符和比较运算符一起使用共同作为条件判断的问题

问题描述 多个逻辑或运算符和比较运算符一起使用共同作为条件判断的问题 var username = "gaolf"; var password = "123456"; var email = "gaolf@brophp.com"; var phone = "010-7654321"; if( username == "gaolf" && password == "123456&qu

窥探Swift之需要注意的基本运算符和高级运算符

之前更新了一段时间有关Swift语言的博客,连续更新了有6.7篇的样子.期间间更新了一些iOS开发中SQLite.CollectionViewController以及ReactiveCocoa的一些东西.时隔两月,还得继续更新Swift语言的东西不是.在去年翻译<Swift编程入门经典>(Swift1.0版本,基于Xcode6)这本书时,系统的搞了搞Swift语言,接下来的一段时间内打算持续更新一下相关Swift语言的一些东西, 不过现在已经是Swift2.0版本了,区别还是不小的.并且目前在

Object-C---&amp;gt;Swift之(三)nil合并运算符、范围运算符

nil合并运算符 在Swift中引入一种新的运算符nil合并运算符:??,它的格式如下: let c = a??b 它的含义如下:判断可选变量a是否为nil,如果a不为nil,c就等于a所包装的真实值,如果a为nil,则程序会返回b的值. 注意这里有两个必须条件: 1. a必须是可选类型的. 2. b的类型必须要和a的强制解析后的类型一致. 其实上边的代码还可以转换成C语言的三目运算: let c = a != nil ? a! : b 范围运算符 SWift不仅引入了nil合并运算符,更是引入

C++运算符重载转换运算符

为什么需要转换运算符? 大家知道对于内置类型的数据我们可以通过强制转换符的使用来转换数据,例如(int)2.1f;自定义类也是类型,那么自定义类的对象在很多情况下也需要支持此操作,C++提供了转换运算符重载函数,它使得自定义类对象的强转换成为可能. 转换运算符的生命方式比较特别,方法如下: operator 类名(); 转换运算符的重载函数是没有返回类型的,它和类的构造函数,析构函数一样是不遵循函数有返回类型的规定的,他们都没有返回值. 下面我看一个例子,看看它是如何工作的: //例1 //程序