Tôi có mã sau:
#include <stdio.h>
int main(int argc, char **argv) {
int i = 0;
(i+=10)+=10;
printf("i = %d\n", i);
return 0;
}
Nếu tôi cố gắng biên dịch nó dưới dạng nguồn C bằng gcc, tôi gặp lỗi:
error: lvalue required as left operand of assignment
Nhưng nếu tôi biên dịch nó dưới dạng nguồn C ++ bằng g ++, tôi không gặp lỗi và khi tôi chạy tệp thực thi:
i = 20
Tại sao các hành vi khác nhau?