What is output of following code? void main() { int i = 400; int *ptr = &i *++ptr = 2; printf("%d %d", i, *ptr); getch(); }
Trả lời:
Đáp án đúng: A
Đoạn code C có một lỗi cú pháp nghiêm trọng ở dòng `*++ptr = 2;`. Trong C, bạn không thể gán một giá trị cho kết quả của phép toán `++ptr` như thế này. `++ptr` sẽ tăng giá trị của con trỏ `ptr` (làm cho nó trỏ đến một vùng nhớ khác), nhưng kết quả của phép tăng này không phải là một lvalue (một biểu thức có thể xuất hiện ở bên trái của phép gán). Do đó, trình biên dịch sẽ báo lỗi.
Vì có lỗi biên dịch, chương trình sẽ không thể thực thi, và không có output nào được tạo ra.
Đáp án đúng là "D. Complier error".