三目运算符

三目运算符这种写法神奇现象

徘徊边缘 提交于 2020-03-14 08:12:23
其中如果你将testString设置为null ,你猜猜将会发生什么呢?? String servicetstring = "1223"+ "," +testString==null?"":"234"+ "," 三目运算符 : <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2, 并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 , 并返回表达式3的结果 . 我本来是想当testString 为null的时候,就testString 赋值为234,可以实际上是要返回的,结果前面最开始的1223字符串也没有了。 原因就是:三目运算符运算完成后,会返回该运算结果的。 来源: oschina 链接: https://my.oschina.net/u/2308739/blog/701761

单目、二目、三目运算符

你离开我真会死。 提交于 2020-02-26 19:48:45
来源 参考: https://blog.csdn.net/cathy_aa/article/details/52369131 单目、二目、三目运算符 单目,一个运算数 i++, i--, !a, ~a 双目,两个运算数 a+b a-b a*b 三目,三个运算数 bc=a?b:c; (if(a) bc =b;else bc =c;) int i = 0; i = (i == 0) ? 1 : 0; ->在C语言中称为间接引用运算符,是二目运算符,优先级同成员运算符“.”。 用法: p->a,其中p是指向一个结构体的指针,a是这个结构体类型的一个成员。表达式 p->a 引用了指针p指向的结构体的成员a。相当于p.a 例如:struct T { int a; char b; }s;struct T* p=&s;那么,p->a相当于s.a。显然,有个等价写法:(*p).a,和p->a完全等效。 ———————————————— 来源: https://www.cnblogs.com/MCSFX/p/12368409.html

三目运算符(java)

跟風遠走 提交于 2020-02-03 14:29:28
格式:boolean ? 表达式1 :表达式2; Boolean为true,则结果为表达式1 Boolean为Flase,则结果为表达式2 Java中的三目运算符相当于简化的If…else…表达式。 三目表达式 if—else语句 三目表达式写在代码块里面可以简化代码。 来源: CSDN 作者: 零度. 链接: https://blog.csdn.net/weixin_43398418/article/details/104152703

Angular 三目运算符

跟風遠走 提交于 2020-01-08 17:31:43
例: 1. < li * ngFor = "let p of wo._video_pages" class = "{{ p==wo._p ? 'page-item active':'page-item'}}" > {{ <表达式1>?<表达式2>:<表达式3> }} 可以实现 if else 的功能 在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值 来源: CSDN 作者: 源哥1 链接: https://blog.csdn.net/qq_41592908/article/details/103892987

java中的三目运算符

喜夏-厌秋 提交于 2019-12-14 19:25:24
对于有些选择分支结构,可以使用简单的条件运算符来代替. 如: if(a<b) min=a; else min=b; 可以用下面的条件运算符来处理 min=(a<b)?a:b; 其中"(a<b)?a:b"是一个"条件表达式",它是这样执行的:  如果a<b为真,则表达式取a值,否则取b值. 条件运算符由两个符号组成"?“和”:", 要求有3个操作对象,所以也叫它三目运算符,它是C语言中唯一的三目运算符. 它的一般形式为: 表达式1?表达式2:表达式3; 以下是关于条件运算符的几点说明: (1) 通常情况下,表达式1是关系表达式或逻辑表达式,用于描述条件表达式中的条件,表达式2和表达式3可以是常量,变量或表达式.例如: (x==y)?‘Y’:‘N’ (d=b b-4 a*c)>=0?sqrt(d):sqrt(-d) ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch 以上均为合法的条件表达式. (2) 条件表达式的执行顺序为:先求解表达式1,若值为非0,表示条件为真,则求解表达式2,此时表达式2的值就作为整个条件表达式的值; 若表达式1的值为0,表示条件为假,则求解表达式3,表达式3的值就是整个条件表达式的值.例如: (a>=0)?a:-a   执行结果是a的绝对值. (3) 在程序中,通过把条件表达式的值直接赋予某个变量.例如: min=(a<b)?a:b 

三目运算符

无人久伴 提交于 2019-12-03 14:15:34
一:   三目运算符即 条件 ? 返回值1 : 返回值2;    在使用三目运算符时,尽量保证两个返回值的类型一致,不然会触发类型转换 1 int a = 1, b = 2; 2 System.out.println(a == b ? 9.9 : 9); 3 System.out.println(a == b ? 'a' : 98); 4 System.out.println(a == b ? 'a' : Integer.MAX_VALUE); 5 System.out.println(a == b ? 'a' : b); 6 System.out.println(a != b ? 'a' : b); 答案:      如果返回值1和返回值2都是同种类型,那么三目最终的返回类型就是这种类型   如果返回值1和返回值2不是同种类型,那么三目最终的返回类型是这两种类型的相同最小父类(最接近的父类,如果没有则返回Object,例如Integer和String最终返回的将是Object)。   对于基本数据类型,有点特殊。如果一个返回值类型为T(T为byte,char或short),另一个为int的常数,那么如果这个常数值在T的取值范围内,则三目最终的返回类型为T,如果常数值不在T的取值范围内,则返回发生自动类型转换。 来源: https://www.cnblogs.com

三目运算符和逻辑与、或的优先级问题

匿名 (未验证) 提交于 2019-12-03 00:27:02
逻辑与的优先级要高于逻辑或 所以x||y+z&&y-z 相当于 x||(y+z&&y-z) x-y&&y||z相当于(x-y&&y)||z 下面为实际测试结果(部分代码): int x=1,y=1,z=1,a,b; a=x||y+z&&y-z; //a=1 b=x-y&&y||z; //b=1 运行后结果 a=1 b=1 说明推导无误 下面来看这个例子: int x=1,y=1,z=1,a; a=x++||y&&z; cout<<x<<endl; //x=2 纵然先计算 y&&z 的结果为1 但是这样并没有用到逻辑或的短路特性 依然会执行x++计算出值 三目运算符的两种嵌套:(三目运算符具有右结合性 从右向左) (1)a?b?c:d:e; 相当于 a?(b?c:d):e; (2)a?b:c?d:e; 相当于 a?b:(c?d:e); 转载请标明出处: 三目运算符和逻辑与、或的优先级问题 文章来源: 三目运算符和逻辑与、或的优先级问题

【写法】三目运算符的写法简化

匿名 (未验证) 提交于 2019-12-02 23:55:01
=============================================== =============================================== 写这篇文章的起源是最近引入了resharp,在写三目运算符的逻辑时提示了可优化的内容,琢磨了一下就有了下面的内容。 举例,假设User实体定义如下: public class User { public string UserName { get; set; } public string Password { get; set; } public int OrderIndex { get; set; } } 业务 场景 :创建新的用户记录时,需要获取新的数据号自增1(OrderIndex ),初始从1开始自增。 一般的写法: var LastUser = getMaxOrderIndexUser(); var NewOrderIndex = LastUser == null ? 1 : LastUser.OrderIndex + 1; 这里提供一种简化写法: var LastUser = getMaxOrderIndexUser(); var NewOrderIndex = (LastUser?.OrderIndex ?? 0) + 1; 来源:博客园 作者: 粽先生 链接:https:/

Python3 三目运算符

余生颓废 提交于 2019-12-02 17:17:28
Python 中没有像 C 语言中一样直接使用 x?a:b 这样的三元表达式,但是它有两种替代方法: 方法一 a if x else b 如果 x 为 True,返回 a;否则返回 b >>> 'True' if 2 > 1 else 'False' 'True' >>> 'True' if 2 < 1 else 'False' 'False' >>> 方法二 利用 and or 短路运算的特点 and 运算时,例如 a and b,如果 a 为 False 就不再判断b的值。 or运算时,例如 a or b,如果 a 为 True 就不再判断 b 的值。 假设表达式为:x and a or b。如果 x 为 True,会接着判断 a,如果 a 等同True,就返回 a 的值。 如果 a 等同 False,就计算 b,返回 b 的值。如果你觉得有点绕,直接看下面的例子: >>> 2 > 1 and 'True' or 'False' 'True' >>> 2 < 1 and 'True' or 'False' 'False' 但这种方法有个坑,如果 a 为 "",即空串,对它作真假值判断时会返回 False,与我们的假设不符。 >>> 2 > 1 and '' or 'False' 'False' 这种方法看起来挺优雅,看在它优雅的份上,能不能补救一下呢? 当然

第4课.布尔类型和引用

末鹿安然 提交于 2019-12-02 16:03:57
1.布尔类型 c++在c语言的基础类型系统上增加了bool bool类型取值只有true(非0)和false(0)(true代表真,编译器用1表示;false代表假,编译器用0表示) 理论上bool只占一个字节 c++编译器会把非0值转化为true,把0值转化为false 2.三目运算符 c语言中三目运算符返回的是变量值;不能做为左值使用 c++中的三目运算符可直接返回变量本身;即可做右值使用,又可作为左值使用 注意 :三目运算符可返回的值中如果有一个是常量值,则不能作为左值使用 来源: https://www.cnblogs.com/huangdengtao/p/11753152.html