如何将以下代码转换为单行?
int *i;
i = some_func_ret_int_ptr();
if(!i)
{
// do something
}
// Will use i later
Run Code Online (Sandbox Code Playgroud)
我想做点什么
if((i=some_func_ret_int_ptr) && !i)
{
//do something
}
// Will use i later
Run Code Online (Sandbox Code Playgroud)
但我在这里浪费一个比较.我有更好的方法吗?我想要的只是if中的赋值和比较,只比较i.
有了C,这就是你可以打高尔夫球:
int *i;
if(!(i = some_func_ret_int_ptr()))
{
// do something
}
// Will use i later
Run Code Online (Sandbox Code Playgroud)
除了其他答案中建议的内容外,您还可以这样做
if (i = some_func_ret_int_ptr(), !i)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
它是您最初的文字实现,语句序列替换为由,运算符分隔的表达式序列。
不过,这没有多大实际意义。