nSubsidy >>= (nHeight / 5,112,000);
then 5,112,000 become to what number for computer?
I suggest you take a look at the Comma operator page on Wikipedia, as it will explain it better than me:
In the C and C++ programming languages, the comma operator (represented by the token ,) is a binary operator that evaluates its first operand and discards the result, and then evaluates the second operand and returns this value (and type).
Your code will then only do the following:
(The first & the 2nd statement are discarded)
You can try it out by yourself:
#include
int main() {
int a, b;
a = (1, 2, 3);
printf("a == %d\n", a);
}
a.c: In function ‘main’:
a.c:6:11: warning: left-hand operand of comma expression has no effect [-Wunused-value]
a = (1, 2, 3);
^
a.c:6:14: warning: left-hand operand of comma expression has no effect [-Wunused-value]
a = (1, 2, 3);
^
a == 3
A valid usage:
#include
int main() {
int a, b;
b = 1;
a = (a = b+1, a--, a+1);
printf("a == %d\n", a);
}
a == 2
The code is executed the following: b = 1; a = b+1 (a will be == 2); a-- (a will be == 1); a+1 will return 2 then this value will be assigned to a. a results as 2.
As you'll see on the wikipedia page, the comma operator has multiple usages.