Logique: ( A && !(B || C)) | | B || C ) la même chose que ( A || B || C )?

J'ai rencontré quelques obj-c code et je me demandais si il y a un moyen de le simplifier:

#if ( A && !(B || C)) || ( B || C )

est-ce le même?

#if ( A || B || C )

Si non, est-il une autre façon de formuler, ce serait plus facile à lire?

[modifier]
J'ai essayé de la table de vérité avant de poser la question, mais pensé que je devais être en manque de quelque chose parce que je doute de la Fondation.cadre/Fondation.h serait d'employer cette forme plus complexe. Est-il une bonne raison pour cela?

Voici le code d'origine (à partir de la Fondation.h):

#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)
pourquoi ne pas simplement mettre en œuvre une petite table de vérité avec les résultats et le test vous-même? Il y a seulement 8 entrées |A=true, B=true, C=true | true=, B=true. C=false | et ainsi de suite et ainsi de suite. Comparer les tables de vérité. Si les sorties sont les mêmes, votre logique est équivalent.
Votre parenthèses dans l'en-tête de la question sont un peu différentes que dans la question elle-même. Si l'en-tête est correcte, la section "de!(B || C) | | B || C)" peut être remplacé par "true", vous laissant avec Un "&& vrai", qui est l'équivalent d'un peu A. d'autre part, la question de version semble être le manque d'une paire de parenthèses, sinon vous avez une erreur de syntaxe. Au-delà de ça, je suis d'accord avec les autres affiches, de créer les tables de vérité.
Perháč - merci pour le modifier!

OriginalL'auteur jpwco | 2011-01-21