带有 printf 和 exit 函数的三元

Ternary with printf and exit function

我想这样用三元

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main (int argc, char **argv) {

   *condition* ? (printf("some text") & exit(1)) : NULL;

   *some code*

   return 0;
};

,但是当我编译文件时出现此错误

36:40: error: void value not ignored as it ought to be
   36 |     condition ? (printf("Some text") & exit(1)) : NULL;
      |                                        ^~~~~~~

我已经阅读了其他一些主题,但找不到任何对我的情况有启发性的内容。如果条件为真,我想打印一条消息,通知 运行 程序需要一些参数,然后退出,因为程序不具备 运行.[=12 所需的条件=]

& 是按位与运算 - 它取两个操作数的位并计算它们的按位与。 exit() 函数 returns a void - 你不能对 void 值进行计算,它是一个空值。

通常,comma operator , 用于在某些只允许使用单个表达式的上下文中链接命令。 , 运算符的结果类型是第二个表达式的类型。

conditional operator ?: 中允许的表达式类型有特定规则,并且类型不能是 void

可以通过以下方式使代码有效(假设 condition 有效):

condition ? printf("Some text"), exit(1), 0 : 0;

但实际上只是:

if (condition) { printf("Some text"); exit(1); }