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
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!
Does this make any sense in C++?
Yes syntactically it does, but without comments you may not know the developers intentions were (if any) other than maybe suppressing a variable warning.
Is a variable name also an expression?
Yes a variable itself is an expression. Ex. if(<expression>) if(something)
This code does compile, so how does this work?
It works by using the comma operator and ignoring the result of something
then assigning 0 to somethingElse
. Although something
was marked volatile
the original developer may of had a compiler that still complained about unused variables and being the clever developer he or she was then decided to suppress with that syntax.
Legal but questionable. The part before the comma doesn't do anything at all.
something, somethingElse = 0;
probably, it is done to avoid the unused variable warning on variable somethin
g an to initialize the somethingElse
variable to 0
.