一个关于三木运算符的问题

原型:

Test t = new Test();
            if (t.str == "1")
                p = "11";
            else if (t.str == "2")
                p = "22";
            else if (t.str == "3")
                p = "33";

switch (t.str)
{
  case "1":
    p = 11;
    break;
  case "2":
    p = 22;
    break;
  case "3":
    p = 33;
    break;
  default:
    break;
}

三元需要返回值,p 放前面

p = t.str == "1" ? "11" : (t.str == "2" ? "22" : "33");

or  p=t.str == "1"?"11":t.str == "2"?"22":"33";  三木运算符的优先级是从右到左

三目运算符,前边 ?前边条件成立则返回 :前的值,不成立则返回后边的值,,,,有许多程序都用了这个特性,比如下边:js  和 c#

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

?运算符(null合并运算符)和三木运算符

?运算符:?运算符也成为null合并运算符.?运算符的左操作数如果不为null,则返回左操作数。反之,则返回右操作数。

三木运算符(js):

 var a=2;
 var b="";
 a=(a?a:b);
当a为false、undefined、null或空字符串时,返回b;否则返回a;
三木运算符(C#):
int a=10;
int b;
b=(a==10)?a++:a--; 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

时间: 2024-10-09 21:10:44

一个关于三木运算符的问题的相关文章

创建圆角 抛出一个错误:二元运算符“|”不能用于两个UIRectCorner操作数

//        let beizer:UIBezierPath = UIBezierPath(roundedRect: btn5.bounds, byRoundingCorners: UIRectCorner.TopLeft|UIRectCorner.TopRight, cornerRadii: CGSize(width: 15, height: 15)) 使用下面代码代替即可 let beizer:UIBezierPath = UIBezierPath(roundedRect: btn5.

三木运算符详解

1.什么是三目运算:(布尔表达式 ? 值0:值1;) 5>3?alert('5大'):alert('3大'); 即    if(5>3){alert('5大')}else{alert('3大')}; 注意:三目运算和if(){}else{}的 区别是三目运算有返回值 例如: var max = a>b?a:b; 2.多条件的三目运算怎么写: 实例:根据学生成绩判定ABCD四个等级 var result = (sc<0 || sc>100) ?("分数无效"

C++ Primer 学习笔记_29_操作符重载与转换(4)--转换构造函数和类型转换运算符归纳、operator new 和 operator delete 实现一个简单内存泄漏跟踪器

C++ Primer 学习笔记_29_操作符重载与转换(4)--转换构造函数和类型转换运算符归纳.operator new 和 operator delete 实现一个简单内存泄漏跟踪器 一.转换构造函数 可以用单个实参来调用的构造函数定义从形参类型到该类型的一个隐式转换.如下: class Integral { public: Integral (int = 0); //转换构造函数 private: int real; }; Integral A = 1; //调用转换构造函数将1转换为In

C++运算符重载的规则

运算符重载的规则如下: 1.C++中的运算符除了少数几个之外,全部可以重载,而且只能重载C++中已经有的运算符. 2.重载之后运算符的优先级和结合性都不会改变 3.运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造,一般来讲,重载的功能应当与原有功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型. 注意:不能重载的运算符只有5个,它们是类属关系运算符“.”.成员指针运算符“.*”.作用域分辨符“::”.sizeof运算符和三木运算符“?:”.前面两个运

swift_重载和自定义运算符

像这样定义一个结构体 struct Vector2D { var x = 0.0 var y = 0.0 } 当 Vector2D 的两个变量相加时,我们需要这样做: let v1 = Vector2D(x: 2.0, y: 3.0) let v2 = Vector2D(x: 4.0, y: 5.0) var v3 = Vector2D(x: v1.x + v2.x, y: v1.y + v2.y) 只是一次这样的相加还好,如果需要多次重复用到这两个结构体的相加运算,就有必要重载一下 + 运算符

3.运算符

运算符 学习要点:1.什么是表达式2.一元运算符3.算术运算符4.关系运算符5.逻辑运算符6.*位运算符7.赋值运算符8.其他运算符9.运算符优先级 ECMAScript-262描述了一组用于操作数据值的运算符,包括一元运算符.布尔运算符.算术运算符.关系运算符.三元运算符.位运算符即赋值运算符.ECMAScript中的运算符适用于很多值,包括字符串.数值.布尔值.对象等.当应用于对象时通常会调用对象的valueOf()和toString()方法,以便取得相应的值. PS:前面讲过typeof操

运算符重载

关键字:operator 相见:<高质量程序设计指南> P255 如果运算符被重载为全局函数,那么只有一个参数的运算符叫做一元运算符,有两个参数的运算符叫做二元运算符. 如果运算符被重载为类的成员函数,那么一元运算符没有参数(但是++和--运算符的后置版本除外),二元运算符只有右侧参数,因为对象自己成了左侧参数. 运算符重载的特殊性 如果重载为成员函数,则this对象发起对它的调用 如果重载为全局函数,则第一个参数发起对它的调用 禁止用户发明该语言运算符集合中不存在的运算符 除了函数调用运算符

Swift -- 语言指南--高级运算符

原文地址: http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和Objective-C中的位运算符和移位运算. 不同于C语言中的数值计算,Swift的数值计算默认是不可溢出的.溢出行为会被捕获并报告为错误.你是故意的?好吧,你可以使用Swift为你准备的另一套默认允许溢出的数值运算符,如可溢出加&+.所有允许溢出的运算符都是以&开始的. 自定义的结构,类和枚举,是否可

PHP运算符

PHP运算符 算术运算符: 有以下几个:+ ,- ,* ,/ ,% ,++ ,-- 注意:取余运算%,先取整,再取余 $v1 = 7.5%3;    //结果为:1 $v2 = 7.5%3.5;  //结果为:1 对比JS中:(JS中不会进行取整处理) var v1 = 7.5%3;    //结果是:1.5 var v2 = 7.5%3.5;  //结果是:0.5 自增自减运算符: 常规:对数字进行自加1或自减1 字符串:只能自增,且自增的效果就是"下一个字符" 布尔值递增递减无效