que he encontrado algo de código obj-c y me pregunto si hay una manera de simplificarlo:Lógica: is (A &&! (B || C)) || (B || C) lo mismo que (A || B || C)?
#if (A && !(B || C)) || (B || C)
es esto lo mismo que?
#if (A || B || C)
Si no, ¿hay alguna otra manera de formularlo que sea más fácil de leer?
[editar] Probé la tabla de verdad antes de hacer la pregunta, pero pensé que me faltaba algo porque dudaba de que Foundation.framework/Foundation.h empleara esta forma más compleja. ¿Hay una buena razón para eso?
Aquí está el código original (de Foundation.h):
#if (TARGET_OS_MAC && !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)) || (TARGET_OS_EMBEDDED || TARGET_OS_IPHONE)
¿por qué no simplemente implementar una pequeña tabla de verdad con los resultados y probarla usted mismo? Solo hay 8 entradas diferentes | A = verdadero, B = verdadero, C = verdadero | A = verdadero, B = verdadero. C = falso | y así sucesivamente y así sucesivamente. Compara las tablas de verdad. Si las salidas son iguales, entonces tu lógica es equivalente. – AndyPerfect
Sus paréntesis en el encabezado de la pregunta son ligeramente diferentes que en la pregunta en sí. Si el encabezado es correcto, la sección "! (B || C) || (B || C)" se puede reemplazar por "verdadero", dejándolo con "A && true", que es equivalente a solo A. Por otro lado, parece que la versión de la pregunta no tiene un par de paréntesis, de lo contrario, tiene un error de sintaxis. Más allá de eso, estoy de acuerdo con los otros carteles, crear las tablas de verdad. – cobaltduck
@Peter Perháč - ¡gracias por la edición! – jpwco