Đáp án là bao nhiêu mọi người. tính thế nào nhỉ

int a = 10;
++a + a++ =???

Tùy ngôn ngữ. Java chắc ra 22 còn C/C++ thì muốn bằng mấy cũng có :slight_smile:

1 Like

Cái nồi gì đây trời. Update app mà gặp cái này đốt nhang cho ông tác giả mỗi ngày, hại não quá. Làm mình phải stack overflow

1 Like

chạy thử thôi?

Java mà chạy trên VS thì dở hơi nên mình không cài :smiley:

Câu này đặc biệt sai với C/C++. https://ideone.com/5O573X

Còn vì sao sai là vì nó thuộc vào nhóm “Undefined behavior”, vì vậy mới nói “muốn bằng mấy cũng được”.

1 Like

Không chừng mấy NN khác nó bug luôn, nói thật nhìn cái phép tính nó còn tào lao hơn mình nữa. Ngôn ngữ đã lộn xộn rồi mà thuật toán còn lộn xộn hơn nữa thì mai mốt có mà về quê cắm câu thôi cho nó ổn định tâm thần.

1 Like

Sao cái vấn đề tào lao này bàn hết năm này qua năm khác.
++a với chả ++i. Tăng hiệu năng cũng không, code sáng cũng không, chả được cái tích sự gì. Tào lao :smile:

5 Likes

Gõ nhanh hơn i+=1 :))
Nhưng mà em thấy chỉ dùng để thay đổi biến thôi chứ cứ rảnh hơi đi gán với tính toán cái đó, vừa khó đọc vừa dễ lỗi, chẳng được tích sự gì.

Vấn đề nằm ở cái gọi là side-effect. Không rành cái này thì không thể nói là thạo C được. Còn C++ thì chắc cũng ko ai xài :smiley:

1 Like

Có i++ rồi nên gõ nhanh hơn là không đúng :smile:

Làm C cũng lâu rồi nhưng tuyệt nhiên không bao giờ dùng. Tuyệt nhiên cũng không phát hiện thấy side-effect nào. Anh em bật mí tý đi :slight_smile:

1 Like

Thật không?

y = (x = 5) * 2;
while(fscanf(f, "%d %d", &x, &y), x!=-1 && y!=-1)

++i đâu ??? (20 char)

++/-- là hai trong những operator có thể gây side effect thôi :slight_smile:

1 Like

Oè đang nói đến ++i. Tìm mỏi mắt không thấy biểu thức kí liên quan gì :hushed:

Kkk topic này nóng quá. Mấy anh phải làm sáng tỏ vấn đề này mới được. Mình hóng tiếp.

Với đa số toán tử hai ngôi (trừ || && , ) thì trình biên dịch có thể tự chọn tính toán hạng bên trái trước hay bên phải trước tùy mỗi biểu thức. Vì vậy gọi là unspecified. Với lời gọi hàm cũng có điều lưu ý tương tự: tham số nào tính trước cũng được.

Nếu lệ thuộc vào trình tự này thì rơi vào undefined behavior, tức là compiler muốn làm gì cũng được.

1 Like

Mới biết thật nhưng biết rồi chẳng làm gì. Mình thấy nó vô lý không khả thi. Bạn có ứng dụng được gì cho cái undefined behavior gì đó không.maf tui muốn ra cỡ 99 thì làm mần sao?

Undefined behavior là điều phải tránh mà bạn :smiley: biết để không phạm, còn nhiều nữa.

2 Likes

Nhìn cái nick name nó là không khoái rồi. Bởi tránh xa tới không biết luôn. Hôm nào dùng thử troll mấy đứa làm chung KKK.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?