30/09/2018, 19:31
Toán tử ++ trong C++ và Java
Mình chạy đoạn code này trong DevC++ và NetBeans IDE
int main()
{
int n=2,t,k;
t = n++++n;
n=2; k = ++nn++;
printf("%d %d",t,k); //8 12
return 0;
}
public static void main(String[] args) {
int n=2,t,k;
t = n++++n;
n=2; k = ++nn++;
System.out.println("_"+t+" "+k); //_8 9
}
DevC++ ra kết quả 8 và 12
NetBeans ra kết quả 8 và 9
Mọi người giải thích sự khác nhau cho mình với
Bài liên quan
Nếu không nhầm. n =1 thì t = ++n thì t = 2. T=n++ thì t =1.
Bạn có thể google lại là ra.
Code của C++ bị undefined behavior mất rồi.
Ko nên code như vậy vì nó vi phạm một rule của C/C++
Còn java theo mình biết thì nó thực hiện câu lệnh từ trái sang phải (ko chắc lắm)
t = n++ * ++n;
Lấy n = 2 thế vào phép tính, sau đó tăng lên 1 (n=3)
Tiếp tới ++n, tăng n lên 1 sau đó lấy n (n=4)
2*4 = 8
k = ++n * n++;
Tăng n lên 1 sau đó bỏ giá trị n vào phép tính (n = 3)
Tiếp tới n++ thì nó lấy giá trị n hiejn tại (n=3) thế vào phép tính nên
k = 3 * 3
Sau đó thì tăng n lên 1
Còn để dễ hiểu toán tử ++ thì ntn
Mình xin hỏi là tại sao lại phải phân biệt ra ++n với n++ ?
Tại sao không chỉ sử dụng mỗi n++ và quên cái ++n kia đi ?
++n có ứng dụng gì nổi trội hơn hẳn n++ hay ++n làm được những cái n++ không làm được ?
(Một con gà chưa bao giờ dùng ++n cho hay @@)
Nhớ không nhầm thì mấy tuần trước học, thầy kĩ thuật lập trình của mình nói là ++n cho performance hơn n++
Như nhau thôi
Compiler nào mà cho performance khác nhau là compiler lởm
cái này cũng hack não dữ lắm, như vậy pn có hiểu được không
Tốt nhất nên tránh mấy kiểu nhập nhằng khó hiểu.