Tôi muốn giảm giá trị một và nếu giá trị đó bằng 0, đặt giá trị đó thành giá trị lớn nhất. Có cách nào để thực hiện việc này thông qua toán học mà không cần phải if (n-1 == 0) { n = max; }
Có cách nào để thực hiện logic boolean rất đơn giản này chỉ sử dụng toán hạng toán học (chẳng hạn như mod)?
Kịch bản ngược lại để tăng giá trị một và sau đó đặt thành 0 khi lớn hơn cực đại có thể dễ dàng đạt được bằng cách sử dụng n = (n + 1) % (max + 1);
. Hơn nữa, điều này thậm chí còn tốt hơn vì bạn có thể tăng thêm bất kỳ số tiền nào (không chỉ một) và nó sẽ vẫn "bọc" một cách chính xác.
Cảm ơn câu trả lời cho đến thời điểm này. Để được rõ ràng, tôi có nghĩa là không có bất kỳ logic boolean (if/else) hoặc boolean nhà khai thác (!, & &, vv) ở tất cả. Tôi chỉ tò mò làm thế nào để làm điều này. Câu trả lời đúng dưới đây có thực sự khiến câu trả lời không đọc được miễn là nhận xét được cung cấp không? Nó sẽ là cần thiết để sử dụng cho trường hợp tổng quát hơn để trừ một số tùy ý và mong đợi quấn đúng xung quanh.
Ozan đặt câu hỏi hay dưới đây. Ngoài sự tò mò, đây có phải là một câu đố logic hay không, có lý do nào đó mà ai đó cần phải tránh các cấu trúc ngôn ngữ cơ bản không? – MightyE
Xem ở trên. Sử dụng nếu như thế chỉ hoạt động nếu bạn trừ một, và không nếu bạn đang trừ một số tùy ý và mong đợi cùng một loại bọc xung quanh như mod cung cấp. – GreenieMeanie