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.
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
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ớ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.
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 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 -_-
Tùy ngôn ngữ. Java chắc ra 22 còn C/C++ thì muốn bằng mấy cũng có
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
What is the difference between i++ and ++i?
chạy thử thôi?
Java mà chạy trên VS thì dở hơi nên mình không cà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”.
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.
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
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
Có i++ rồi nên gõ nhanh hơn là không đúng
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
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
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ì
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.
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 biết để không phạm, còn nhiều nữa.
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.
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 -_-