在C中的位置MIN和MAX定义,如果有的话?
实现这些的最佳方式是什么,尽可能通用和安全?(首选编译器扩展/内置主流编译器.)
我曾经使用但从未理解的东西是C++编写代码的能力:
#include <stdio.h>
void sideEffect()
{
printf("Hello, I'm a side effect\n");
}
int main()
{
printf(({sideEffect(); "Hello side effect\n";}));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这打印:
Hello, I'm a side effect
Hello side effect
Run Code Online (Sandbox Code Playgroud)
该({ expr1; expr2; })部分似乎运行块并用最后一个值"替换"整个事物.
这只是运营商优先级的结果,我没有得到,还是还有其他事情发生?
不明显的(对我来说)是最后一个表达式被复制,即使它正在返回一个引用.我添加了一个简单的Foo类,当它被复制到上面的例子时打印:
...
struct Foo
{
Foo()
{}
Foo(const Foo&)
{
printf("Copying Foo...\n");
}
};
const Foo& getFoo()
{
static Foo f;
return f;
}
int main()
{
const Foo& foo = ({sideEffect(); getFoo();});
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Hello, I'm a side …Run Code Online (Sandbox Code Playgroud)