请问val = val == 0 ? 0 : 1;是什么意思?我常见i++;或++i;首次见该写法
关于
val = val == 0 ? 0 : 1;代码的含义解析 嘿,这个写法是三元条件运算符的典型应用,咱们拆开来一步步看就懂了!
三元运算符的核心结构是:判断条件 ? 条件成立时的结果 : 条件不成立时的结果,它其实是if-else语句的简写形式,用来快速根据条件给变量赋值。
对应到你看到的这段代码:
- 第一步先做判断:
val == 0——检查变量val的值是不是等于0 - 如果判断结果为真(
val确实是0),就把0赋值给val - 如果判断结果为假(
val是任何非0的数,不管正负),就把1赋值给val
举几个实际例子更直观:
- 当
val = 0时,执行后val还是0 - 当
val = 3时,执行后val变成1 - 当
val = -1时,执行后val也变成1
你也可以把这段代码转换成更直白的if-else写法,效果完全一致:
// 等价的if-else版本 if (val == 0) { val = 0; } else { val = 1; }
其实这段逻辑还能简化,比如写成val = val != 0 ? 1 : 0;,意思是一样的——非0就赋值1,0就赋值0。在很多编程语言里,甚至可以用val = !!val;来实现相同效果(把非0值转成布尔值true,再取反两次变成数字1;0则会转成false,取反两次变成0)。
内容的提问来源于stack exchange,提问作者Mr.Kim
相关产品推荐
相关产品推荐

