带有 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); }
我想这样用三元
#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); }