Я работаю с C ++ много лет, но только что понял что-то подозрительное в добавочном присваивании.
У меня есть этот фрагмент
a = 4;
b = 2;
c = 0;
c = c + a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
c = c + a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
c += a < b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
c += a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
c += a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
И результат
a: 4 b: 2 c: 1
a: 4 b: 2 c: 1
a: 4 b: 2 c: 1
a: 4 b: 2 c: 2
a: 4 b: 2 c: 3
Если вы заметили, первые две строки одинаковы. Или «c» не обновляется после первого c = c + a> b;
Однако значение c обновляется, когда мы используем добавочное присваивание + =
Есть мысли?