-1

Can anybody explain for me:

int a, b, c, d;
a = 2;
b = 4;
c = a, b;
d = (a, b);

Why c == 2 and d == 4 ???

StoryTeller - Unslander Monica
  • 165,132
  • 21
  • 377
  • 458

1 Answers1

6

The two statements are both evaluated as

c = a;
d = b;

due to how the comma operator (which has the lowest precedence of any operator) works in C and C++.

For the first one, c = a is evaluated first (as = has higher precedence than the comma operator) then b (which is a no-op) is evaluated. The entire expression has a value b but that's not assigned to anything.

For d = (a, b);, (a, b) is first evaluated due to the parentheses. This has a value b, and that is assigned to d.

Bathsheba
  • 231,907
  • 34
  • 361
  • 483