01/10/2018, 08:49

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

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

rogp10 viết 10:53 ngày 01/10/2018

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

Đăng Trần viết 10:53 ngày 01/10/2018

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

stackoverflow.com
Dlaor

What is the difference between i++ and ++i?

c#
asked by Dlaor on 06:01PM - 27 Jul 10

Trần Hoàn viết 10:51 ngày 01/10/2018

chạy thử thôi?

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

rogp10 viết 10:54 ngày 01/10/2018

chạy thử thôi?

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”.

Đăng Trần viết 10:53 ngày 01/10/2018

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.

Văn Dương viết 11:05 ngày 01/10/2018

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

Trần Hoàn viết 10:57 ngày 01/10/2018

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ì.

rogp10 viết 10:50 ngày 01/10/2018

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

Văn Dương viết 10:56 ngày 01/10/2018

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

Văn Dương viết 10:52 ngày 01/10/2018

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

rogp10 viết 10:51 ngày 01/10/2018

Thật không?

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

Văn Dương viết 10:52 ngày 01/10/2018

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

rogp10 viết 10:57 ngày 01/10/2018

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

Văn Dương viết 10:55 ngày 01/10/2018

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ì

Đăng Trần viết 10:58 ngày 01/10/2018

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.

rogp10 viết 11:01 ngày 01/10/2018

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.

Đăng Trần viết 10:58 ngày 01/10/2018

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?

rogp10 viết 10:53 ngày 01/10/2018

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

Đăng Trần viết 10:59 ngày 01/10/2018

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.

Trần Hoàn viết 11:00 ngày 01/10/2018

undefined behavior tức là cùng một ngôn ngữ, một phiên bản nhưng vì những trường hợp đó chưa được tính đến nên trong ngôn ngữ chưa xét, các compiler khác nhau có thể tính toán khác nhau.
Ứng dụng thì…

Rốt cuộc ông nào thiết kế C lại nghĩ ra cái trò i++ là int mà không phải là void -_-

Bài liên quan
0