Thách thức: Xác định x
theo cách mà biểu thức (x == x+2)
sẽ đánh giá là đúng.
Tôi đã gắn thẻ câu hỏi bằng C, nhưng câu trả lời bằng các ngôn ngữ khác đều được chào đón, miễn là chúng sáng tạo hoặc làm nổi bật một khía cạnh thú vị của ngôn ngữ.
Tôi dự định chấp nhận giải pháp C, nhưng các ngôn ngữ khác có thể nhận được phiếu bầu của tôi.
- Đúng - hoạt động trên các triển khai tuân thủ tiêu chuẩn. Ngoại lệ - giả sử triển khai các loại cơ bản, nếu đó là cách triển khai phổ biến (ví dụ: giả sử
int
là bổ sung 32 bit 2) là OK. - Đơn giản - nên nhỏ, sử dụng các tính năng ngôn ngữ cơ bản.
- Thú vị - đó là chủ quan, tôi thừa nhận. Tôi có một số ví dụ cho những gì tôi cho là thú vị, nhưng tôi không muốn đưa ra gợi ý. Cập nhật : Tránh tiền xử lý là thú vị.
- Nhanh chóng - Câu trả lời tốt đầu tiên sẽ được chấp nhận.
Sau khi nhận được 60 câu trả lời (tôi không bao giờ mong đợi như vậy), có thể tốt để tóm tắt chúng.
60 câu trả lời chia thành 7 nhóm, 3 trong số đó có thể được thực hiện bằng C, phần còn lại bằng các ngôn ngữ khác:
- Bộ tiền xử lý C.
#define x 2|0
đã được đề xuất, nhưng có nhiều khả năng khác. - Điểm nổi. Số lượng lớn, vô cùng
hoặc NaNđều hoạt động. Con trỏ số học. Một con trỏ tới một cấu trúc khổng lồ gây ra thêm 2 để bao quanh.
Phần còn lại không hoạt động với C:
- Quá tải toán tử - A
+
không thêm hoặc a==
luôn trả về giá trị true. - Thực hiện
x
một cuộc gọi chức năng (một số ngôn ngữ cho phép nó mà không cầnx()
cú pháp). Sau đó, nó có thể trả lại một cái gì đó mỗi lần. - Một kiểu dữ liệu một bit. Sau đó
x == x+2 (mod 2)
. - Thay đổi
2
- một số ngôn ngữ cho phép bạn gán0
cho nó.
add to Set
thư viện chuẩn, mà không xác định lại +
chính mình, không phù hợp với 7 danh mục này, IMHO.
4. Quick
? Bạn có nghĩa là "Bất cứ ai biết một và đủ may mắn để đọc câu hỏi này đầu tiên"?