如何减少表达

Vla*_* AC 2 c syntax ternary-operator conditional-operator

如何减少表达?如果我是对的,如果只有x = 0,则x指定0; 否则x指定1.然而,它怎么能缩短?

 x = (x = 0) ? 0 : 1
Run Code Online (Sandbox Code Playgroud)

mol*_*ilo 7

假设你的意思x == 0,这很短:

x = !!x;
Run Code Online (Sandbox Code Playgroud)

说明:

如果x0,!x1,那么!!x0.
如果x不是0,!x0,那么!!x1.

如果x = 0是故意的,代码是未定义的.

但是你可以制作一个定义明确的较短版本,我认为它可以捕捉到作者的意图:

 x = 1;
Run Code Online (Sandbox Code Playgroud)

因为价值x = 00.