相关疑难解决方法(0)

C中的MIN和MAX

在C中的位置MINMAX定义,如果有的话?

实现这些的最佳方式是什么,尽可能通用和安全?(首选编译器扩展/内置主流编译器.)

c max min c-preprocessor

265
推荐指数
11
解决办法
67万
查看次数

如何用C++编译"({expr1; expr2;})"?

我曾经使用但从未理解的东西是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; })部分似乎运行块并用最后一个值"替换"整个事物.

这只是运营商优先级的结果,我没有得到,还是还有其他事情发生?

UPDATE

不明显的(对我来说)是最后一个表达式被复制,即使它正在返回一个引用.我添加了一个简单的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)

c++ syntax gcc

5
推荐指数
1
解决办法
181
查看次数

标签 统计

c ×1

c++ ×1

c-preprocessor ×1

gcc ×1

max ×1

min ×1

syntax ×1