注意:我很清楚 a = b ? c : d 是什么意思,可这不是我要问的问题。
三元运算符 a = b ?: c 是什么意思。注意, ?和: 是在一起的
c C++ objective-c
虽然题主的问题的标签是C和C++,但我写了一个PHP的脚本测试了一下,结果如下:
php <?php $b = true; $c = false; $a = $b ?: $c; var_dump($a); // 输出true $b = false; $c = true; $a = $b ?: $c; var_dump($a); // 输出true
php
<?php $b = true; $c = false; $a = $b ?: $c; var_dump($a); // 输出true $b = false; $c = true; $a = $b ?: $c; var_dump($a); // 输出true
从输出结果来看, a = b ?: c 的意思就是:如果 b 为 true ,则 a = b ,如果 b 为 false ,则 a = c
a = b ?: c
b
true
a = b
false
a = c
b = true c = false a = b ?: c // a = true b = false c = true a = b ?: c // a = true
a = b ?: c 是 a = b ? b : c 的简写。
a = b ? b : c
帮你搜索了一下,见 StackOverflow
格式应该是
(boolean表达式) ? a : b
如果boolean表达式的内容为true,则a。 如果boolean表达式的内容为false, 则b。
举个例子:
java public int test(int a) { if (a > 0) { return 1; } else { return -1; } }
java
public int test(int a) { if (a > 0) { return 1; } else { return -1; } }
上面这个if-else可以用三元运算来代替,如下:
java public int test(int a) { return (a > 0) ? 1 : -1; }
public int test(int a) { return (a > 0) ? 1 : -1; }
NSTimer、NSThread 和 NSRunloop 之间区别?
websocket和普通socket 区别是?
C语言或OC或C++ 中英文混合的文件读取前3个字符怎么做?
请问可以用全角字母定义变量么?
C语言中, 如下两种定义字符串的方式有什么不同?
数组为什么不让用户得到数组大小?