php中利用逻辑运算符&&和||代替if else

逻辑运算符介绍

我们都知道&&逻辑运算只有前后运算都返回true结果才是true,否则返回false

<?php
 var_dump(1&&2);//结果打印:bool(true)
 var_dump(1&&0);//结果打印:bool(false)

反之,||逻辑运算符当前面运算返回true,就直接返回true,如果前面运算返回false,则看后面状态

<?php
 var_dump(1||0);//结果打印:bool(true)
 var_dump(0||1);//结果打印:bool(true)
 var_dump(0||0);//结果打印:bool(false)

改造if-else结构

看以下if-else示例

<?php
 $a = 0;
 if ($a > 1) {
 	$c = 2;
 } else {
 	$c = -1;
 }
 var_dump($c);//打印结果:int(-1)

用运算符改造以上程序

<?php
 $a = 0;
 ($a>1) && ($c=2) || ($c=-1);
 var_dump($c);//打印结果:int(-1)

总结问题

从上面示例可以观察到,整个改造过后的整体逻辑句式是返回true的,运算式子($c=2)也是当做true,因此按照这个逻辑去修改if-else。值得注意的问题是,这样的写法虽然简略了代码行数,结构上相对简洁,不过对于,后期其他开发人员去维护的话可能对其阅读代码的能力要求比较高。(简写一时爽,一直简写,一直爽),交流Q:1341514258,微博:唐智勤Wz

### C# 中逻辑运算符 `&&` `||` 的短路规则 在 C# 中,逻辑运算符 `&&` `||` 遵循短路规则。对于 `&&` 运算符,如果第一个操作数为 `false`,则整个表达式的结果必定为 `false`,因此不会对第二个操作数进行求值[^3]。同样,对于 `||` 运算符,如果第一个操作数为 `true`,则整个表达式的结果必定为 `true`,也不会对第二个操作数进行求值。 以下是一个示例代码,展示短路规则的实际应用: ```csharp int a = 10; bool str = a > 1 || ++a < 11; Console.WriteLine(a); // 输出: 10,因为第一个条件为 true,++a 不会被执行[^3] int b = 20; bool str2 = b > 100 && ++b > 11; Console.WriteLine(b); // 输出: 20,因为第一个条件为 false,++b 不会被执行 ``` 在这个例子中: - 对于变量 `a`,由于第一个条件 `a > 1` 已经为 `true`,因此 `++a < 11` 不会被求值,最终输出的 `a` 值保持不变。 - 对于变量 `b`,由于第一个条件 `b > 100` 为 `false`,因此 `++b > 11` 不会被求值,最终输出的 `b` 值也保持不变。 ### 短路规则的重要性 短路规则不仅提高了程序的效率,还避免了可能引发错误的操作。例如,在检查一个对象是否为空后再访问其属性时,短路规则可以防止出现空引用异常[^3]。 #### 示例:避免空引用异常 ```csharp string name = null; if (name != null && name.Length > 0) { Console.WriteLine("Name is not empty."); } else { Console.WriteLine("Name is null or empty."); } ``` 在这个例子中,如果 `name` 为 `null`,则不会对 `name.Length` 进行求值,从而避免了空引用异常的发生[^3]。 ### 逻辑运算符优先级与结合性 需要注意的是,逻辑运算符 `&&` `||` 的优先级低于算术运算符关系运算符逻辑非 `!` 除外)。这意味着在混合使用这些运算符时,可能需要使用括号来明确表达式的求值顺序[^2]。 #### 示例:逻辑运算符的优先级 ```csharp bool a = true; bool b = false; bool c = true; bool result = (a || b) && c; // (true || false) && true -> true && true -> true[^2] Console.WriteLine(result); // 输出: true ``` 在这个例子中,由于 `||` 的优先级低于 `&&`,因此需要用括号明确 `(a || b)` 的求值顺序。 ### 总结 C# 中的逻辑运算符 `&&` `||` 遵循短路规则,这有助于提高程序效率并避免潜在错误。在实际编程中,应充分利用这一特性来编写更安全高效的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值