30/09/2018, 23:01
Thắc mắc về i++ và ++i
int i=3;
if(i==i++){
printf("true1");
}
if(i==++i){
printf("true2");
}
i++ là tăng i sau mà tại sao lại in ra true2 vậy mọi người?
Bài liên quan
int i=3;
if(i==i++){
printf("true1");
}
if(i==++i){
printf("true2");
}
i++ là tăng i sau mà tại sao lại in ra true2 vậy mọi người?
This post was flagged by the community and is temporarily hidden.
mình nên đọc kỹ lại phần nào vậy bạn?
This post was flagged by the community and is temporarily hidden.
This post was flagged by the community and is temporarily hidden.
Mình nghĩ là vậy:
i==i++
+Theo thứ tự ưu tiên i++ sẽ thực hiện trước.
i++
tạo ra một bản sao bằng với i (tạm gọi làI=i=3
)+Sau đó thì i tăng lên 1 đơn vị (
i=4
)+Vì là toán tử hậu tố nên
i==i++
sẽ lấy bản sao ra thực hiệni==I
mà lúc nàyi=4
cònI=3
=> i==i++ saiChả hiểu mấy bạn trên nghĩ gì khi đi giải thích ra true2 là đúng? true1 sai
Nhìn đoạn code trên chắc chắn in ra true1 mới là đúng
In ra true2 => IDE đểu =))
Eclipse Java: True1
Theo mình nhé:
Về cái if 1 có i++ nó tương đương kiểu như là i+1 => i==i+1 => flase không in true1
Về cái if thứ 2 thì i==++i Đầu tiên nó tăng i từ 3 lên 4 sau đó nó so sánh i==i hay không (cái này luôn đúng rồi ) nên nó in ra true2.bạn tìm hiểu thêm về cái tiền tố trong C ý.
Nên dựa theo lý thuyết của ngôn ngữ, chứ theo ý kiến cá nhân bạn thì làm được gì? Bạn có phải là người tạo ra ngôn ngữ lập trình đâu.
Theo mình nghĩ thì toán tử
++
được ưu tiên trước toán tử==
cho nên khi bạn dùng chung một biến để so sánh sẽ không có sự khác biệt.Thay vào đó bạn có thể dùng một biến
a
khác để so sánh thay vì biếni
Ý kiến cá nhân :
Không biết và cũng không nên quan tâm vấn đề này. Chỉ nên dung I++.
Mà dù có hiểu được chính xác I++ với ++I trên từng IDE, Compiler cũng không giải quyết được cái vấn đề gì.