我的目的是尝试编写一个尽可能简洁的函数。
int func(void)
{
int a;
return (
a = 42,
a++,
if (a > 42) a *= -1,
a);
}
Run Code Online (Sandbox Code Playgroud)
我本来期待返回-43。相反,我遇到了编译错误。
\n\n我的目的是尝试编写一个尽可能简洁的函数。
\n
int a;\n\nreturn (\n a = 42,\n a++,\n if (a > 42) a *= -1,\n a);\nRun Code Online (Sandbox Code Playgroud)\n可以简单地改写为:
\nreturn -43;\nRun Code Online (Sandbox Code Playgroud)\n或者,如果这对您来说太短,那么您需要寻找条件运算符(俗称三元运算符),其形式为:
\n/* if a is logically true (does not evaluate to zero) \n* then evaluate expression b, otherwise \n* evaluate expression c\n*/\na ? b : c;\nRun Code Online (Sandbox Code Playgroud)\n所以该return语句可以重写为:
a = 42;\nreturn ++a > 42 ? -a : a;\nRun Code Online (Sandbox Code Playgroud)\n就你的目标而言,它没有任何优点。你不应该编写聪明的代码。它损害了可读性和可维护性。(尽管在本例中,情况并非如此)
\n记住:
\n[1] \xe2\x80\x94 信用:@SteveSummit
\n| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |