C++ 包含两个整数的列表的structinit减少为一个整数

C++ 包含两个整数的列表的structinit减少为一个整数,c++,C++,我试图用变量初始化结构。但如果我使用type name=(values…),则只使用最后一个元素进行初始化。它看起来不适合我,但我不知道它是否有未定义的行为,是编译器错误还是其他什么。我会删除一条错误消息或使用更多元素初始化 代码: 为什么是这种方式,而不是使用2或CompilerErrorMessage初始化 编译器:g++(GCC)5.3.0就像Ben说的,是逗号运算符引起了问题 在逗号表达式E1、E2中,表达式E1求值,其结果被丢弃,其副作用在表达式E2求值开始之前完成 通过执行a=(b

我试图用变量初始化结构。但如果我使用type name=(values…),则只使用最后一个元素进行初始化。它看起来不适合我,但我不知道它是否有未定义的行为,是编译器错误还是其他什么。我会删除一条错误消息或使用更多元素初始化

代码:

为什么是这种方式,而不是使用2或CompilerErrorMessage初始化


编译器:g++(GCC)5.3.0

就像Ben说的,是逗号运算符引起了问题

在逗号表达式E1、E2中,表达式E1求值,其结果被丢弃,其副作用在表达式E2求值开始之前完成


通过执行
a=(b,c)
您有效地设置了
a=c
并丢弃了b

,就像Ben所说的,是逗号运算符引起了问题

在逗号表达式E1、E2中,表达式E1求值,其结果被丢弃,其副作用在表达式E2求值开始之前完成


通过执行
a=(b,c)
可以有效地设置
a=c
并放弃b

逗号运算符。顺便说一句,尝试使用
{}
大括号而不是
()
括号。逗号运算符。顺便说一句,尝试使用大括号代替括号。谢谢这句话对我来说很完美,谢谢Ben,没问题,很乐意帮忙。如果你对答案感到满意,你能把它标记为已回答吗?帮助其他用户查看正确的解决方案谢谢!这句话对我来说很完美,谢谢Ben,没问题,很乐意帮忙。如果你对答案感到满意,你能把它标记为已回答吗?帮助其他用户查看正确的解决方案
struct funct {
    funct(int i)
    {
        std::cout << "init with one\t" << i << std::endl;
    }
    funct(int i, int j)
    {
        std::cout << "init with two\t" << i << "\t" << j << std::endl;
    }
};

int main() {
    funct tempa = funct(42);
    funct tempb = 43;
    funct tempc = funct(44, 45);
    funct tempd = (46, 47); // thats the compiling thing
    return 0;
}
init with one   42
init with one   43
init with two   44      45
init with one   47