逗号操作员的左右操作数没有效果(警告)

Left and Right operand of comma operator has no effect (Warning)

本文关键字:有效果 警告 操作数 操作员 左右      更新时间:2023-10-16

我在班上的构造方警告,我以前从未见过。这就是我的构造函数的样子。

    Account(std::string n = "NULL", std::string i = "0", Stats s = (0,0,1) ) 
        : name(n), id(i), stat(s) {}

如果我删除任何这些逗号,则会导致编译错误,不是吗?该警告是不正确的,还是可以更改的东西来修复它?

问题是: (0,0,1)

是围绕0,0,1的括号,该表达式评估为1。(逗号运算符是评估第一个和第二个表达式并返回第二个表达式的Infix操作员。在这种情况下,您有两个这样的操作员。)

我不知道你在那里想要什么,但我猜不是。


编辑:看来您想要Stats s(0,0,1)

这个问题很可能在该部分Stats s = (0,0,1)中。C 将其视为要计算的表达式序列,同时仅保留最后一个值。它返回1.您可能是指

Stats s = Stats(0,0,1)

如果您的统计结构具有这样的构造函数,则有效。请注意,在C 11中,您具有此较短的语法:

Stats s = {0,0,1}

我认为您正在寻找的是为function参数提供一个struct的默认值,我认为在这里讨论了如何将默认值分配给C 功能?

相关文章: