Search code examples
c++comma-operator

Expression "variable, variable = value;"


I have been looking through some MFC code and i came across this expression. It was in OnInitDialog() function, didn't look like it's MFC specific. The variables had some name, value was 0.

int volatile something, somethingElse; //this was global

something, somethingElse = 0; //this was inside the function

Does this make any sense in C++? I know how the comma operator works, though in a free form like here it should be separating expressions. Is a variable name also an expression? This code does compile, so how does this work?


Solution

  • This is likely an error in the program. The statement

    a, b = c;
    

    Is completely equivalent to

    b = c;
    

    Since the comma operator evaluates from left to right and discards all values except the last. Since the expression a has no side effects, it's essentially a no-op.

    I would suspect that this is either programmer error or an incorrect translation of code from a different language into C++. You should contact the author to let them know about this.

    Hope this helps!