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