(choice=='Y'||choice=='y')?((printf("\n...The program is now resetting...\n")&&(main()))):((printf("\n\tThank you for trying out the BPCC App.\n"))&&(exit(0)));
如果我删除exit(0)
整个程序运行正确,但我需要包含exit(0)
.
你能帮帮我吗?
(choice=='Y'||choice=='y')?((printf("\n...The program is now resetting...\n")&&(main()))):((printf("\n\tThank you for trying out the BPCC App.\n"))&&(exit(0)));
如果我删除exit(0)
整个程序运行正确,但我需要包含exit(0)
.
你能帮帮我吗?
从C11
标准,第 6.5.13 章,逻辑与 [ &&
] 运算符
每个操作数都应具有标量类型。
并从手册页exit()
void exit(int status);
现在,void
不是有效值(或标量类型)。所以,你不能写
...:((printf("\n\tThank you for trying out the BPCC App.\n"))&&(exit(0)));
|--------|
The return value of `exit()` is used
as one of the operands of `&&` here
因此错误。您不能使用(基本上是什么意思?)的返回值来编写逻辑。exit()
你必须想出一些替代方案。(比如调用exit()
作为下一条指令或类似指令)。正如@BLUEPIXY先生的回答中提到的,一种可能的方法是使用运算符 [ ],如下所示comma
,
.... (printf("\n\tThank you for trying out the BPCC App.\n")) , (exit(0))
也就是说,这种方法(main()
递归调用)不被认为是一种好的做法。
试试这个
(printf("message") && (exit(0),1))
或者
(printf("message") , exit(0))
函数exit
声明如下
_Noreturn void exit(int status);
所以你不能在这样的表达式中使用它
(printf("\n\tThank you for trying out the BPCC App.\n"))&&(exit(0))
您可以使用逗号运算符代替运算符 &&。
因此,三元运算符可以如下所示
( choice == 'Y' || choice == 'y' )
? ( printf( "\n...The program is now resetting...\n" ) , ( void )main() )
: ( printf( "\n\tThank you for trying out the BPCC App.\n" ), exit( 0 ) );
或者以下方式
( choice == 'Y' || choice == 'y' )
? ( printf( "\n...The program is now resetting...\n" ) , exit( main() ) )
: ( printf( "\n\tThank you for trying out the BPCC App.\n" ), exit( 0 ) );