相关疑难解决方法(0)

为什么不使用三元运算符而不为"true"条件赋值(x = x?:1)

在Android开源qemu代码中,我遇到了这行代码:

machine->max_cpus = machine->max_cpus ?: 1; /* Default to UP */
Run Code Online (Sandbox Code Playgroud)

这只是一种令人困惑的说法:

if (machine->max_cpus) {
   ; //do nothing
} else {
 machine->max_cpus = 1;
}
Run Code Online (Sandbox Code Playgroud)

如果是这样,那就不会更清楚了:

if (machine->max_cpus == 0) machine->max_cpus = 1;
Run Code Online (Sandbox Code Playgroud)

有趣的是,这可以编译并与gcc一起使用,但不能在http://www.comeaucomputing.com/tryitout/上编译.

c gcc qemu conditional-operator android-emulator

39
推荐指数
3
解决办法
6569
查看次数

C中的IF-ELSE语句快捷方式

对于速记IF-ELSE语句,C具有以下语法

    (integer == 5) ? (TRUE) : (FALSE);
Run Code Online (Sandbox Code Playgroud)

我经常发现自己只需要声明的一部分(TRUE或FALSE)并使用它

    (integer == 5) ? (TRUE) : (0);
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有办法不使用这种速记符号包含声明的ELSE部分?

c if-statement shortcut

14
推荐指数
2
解决办法
7万
查看次数