Trong một số vấn đề, chúng ta có thể tìm thấy một số câu lệnh printf () chứa một số dòng với toán tử ++. Trong một số câu hỏi của kỳ thi cạnh tranh, chúng ta có thể tìm thấy những dạng câu hỏi này để tìm ra đầu ra của mã đó. Trong phần này, chúng ta sẽ xem một ví dụ về loại câu hỏi đó và cố gắng tìm ra câu trả lời sẽ là gì.
Mã mẫu
#include<stdio.h> int main() { volatile int x = 20; printf("%d %d\n", x, x++); x = 20; printf("%d %d\n", x++, x); x = 20; printf("%d %d %d ", x, x++, ++x); return 0; }
Bây giờ chúng ta sẽ cố gắng đoán đầu ra sẽ là gì. Hầu hết các trình biên dịch lấy từng tham số của printf () từ phải sang trái. Vì vậy, trong câu lệnh printf () đầu tiên, tham số cuối cùng là x ++, vì vậy điều này sẽ được thực hiện trước, nó sẽ in ra 20, sau đó tăng giá trị từ 20 lên 21. Bây giờ in đối số cuối cùng thứ hai và hiển thị 21. Như vậy các dòng khác cũng được tính theo cách này. Đối với ++ x, nó sẽ tăng giá trị trước khi in và đối với x ++, nó sẽ in giá trị lúc đầu, sau đó tăng giá trị.
Vui lòng kiểm tra đầu ra để hiểu rõ hơn.
Đầu ra
21 20 20 20 22 21 21