Expression “variable, variable = value;”

后端 未结 4 912
[愿得一人]
[愿得一人] 2021-01-19 06:43

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

相关标签:
4条回答
  • 2021-01-19 07:00

    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!

    0 讨论(0)
  • 2021-01-19 07:04

    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.

    0 讨论(0)
  • 2021-01-19 07:05

    Legal but questionable. The part before the comma doesn't do anything at all.

    0 讨论(0)
  • 2021-01-19 07:05
    something, somethingElse = 0; 
    

    probably, it is done to avoid the unused variable warning on variable something an to initialize the somethingElse variable to 0.

    0 讨论(0)
提交回复
热议问题