一、先上结论
算术 > 比较 > 逻辑与(&&) > 逻辑或(||) > 赋值
二、常见的坑
- || 和 &&
cs
if (a || b && c)
// 实际的执行顺序
if (a || (b && c))
- 字符串拼接 + 数字计算
cs
Console.WriteLine("结果:" + 1 + 2); // 结果:12
- 三元运算符可读性较差
cs
var r = a > b ? a > c ? a : c : b;
- 非短路运算
cs
if (obj != null & obj.Value > 0) // 抛异常
- 陷阱 短路运算
cs
int x = 1;
bool r = x > 0 || x++ > 1;
// r = true
// x = 1