tôi đã gặp phải một số mã obj-c và tôi tự hỏi nếu có một cách để đơn giản hóa nó:Logic: là (A &&! (B | | C)) || (B || C) giống như (A | | B | | C)?
#if (A && !(B || C)) || (B || C)
là này giống như?
#if (A || B || C)
Nếu không, có cách nào khác để xây dựng nó dễ đọc hơn không?
[edit] Tôi đã thử bảng chân lý trước khi đặt câu hỏi, nhưng nghĩ rằng tôi đã bỏ lỡ một điều gì đó vì tôi nghi ngờ rằng Foundation.framework/Foundation.h sẽ sử dụng hình thức phức tạp hơn này. Có lý do chính đáng cho nó không?
Dưới đây là mã gốc (từ Foundation.h):
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)
tại sao không chỉ thực hiện một bảng chân lý nhỏ với kết quả và tự mình thử nghiệm? Chỉ có 8 đầu vào khác nhau | A = true, B = true, C = true | A = true, B = true. C = sai | Vân vân và vân vân. So sánh các bảng chân lý. Nếu các kết quả đầu ra giống nhau, thì logic của bạn là tương đương. – AndyPerfect
Dấu ngoặc đơn của bạn trong tiêu đề của câu hỏi hơi khác so với câu hỏi. Nếu tiêu đề là chính xác, thì phần "! (B | | C) || (B || C)" có thể được thay thế bằng "true", để lại cho bạn "A && true", tương đương với chỉ A. Mặt khác, phiên bản câu hỏi có vẻ thiếu một cặp dấu ngoặc đơn, nếu không bạn có lỗi cú pháp. Ngoài ra, tôi đồng ý với các áp phích khác, tạo ra các bảng sự thật. – cobaltduck
@Peter Perháč - cảm ơn bạn đã chỉnh sửa! – jpwco