una oración negación negaciones negacion logica leyes inferencia eliminacion ejercicios ejemplos doble afirmacion c standards

oración - leyes de inferencia doble negacion



doble negación en C: ¿se garantiza que devolverá 0/1? (2)

¿Está garantizado !!(x) por el estándar para devolver 0/1?

Tenga en cuenta que no estoy preguntando sobre c ++, donde se define un tipo bool.


Este es un comentario realmente, pero es demasiado largo. (Por favor, no lo vote solo sobre esa base).

Encontré un documento muy extraño mientras buscaba el estándar para responder a su pregunta: El nuevo estándar C: un comentario económico y cultural. Y dicen que la academia no cuenta con los fondos suficientes. ( Here está el PDF completo de 2083 páginas de 10.5MB. El primer enlace es solo la sección de doble negación).

Tiene esto que decir sobre el tema de la doble negación: "Un doble negativo a menudo se interpreta como una afirmación positiva en inglés (p. Ej.," No es desconocido que ocurran dobles negativos en la fuente C "). La misma semántica que se aplica en C. Sin embargo, en algunos idiomas (por ejemplo, español) se interpreta que un doble negativo hace que el enunciado sea más negativo (este uso sí ocurre en el habla informal en inglés, por ejemplo, "usted no ha visto nada todavía", pero es raro y frunció el ceño socialmente 1 ). "

Creo que el autor estaría feliz de saber que esto no sirve para nada al responder a su pregunta real (la respuesta es sí).


Sí, en C99, ver §6.5.3.3 / 4:

¡El resultado del operador de negación lógica! es 0 si el valor de su operando se compara desigual a 0, 1 si el valor de su operando se compara con 0. El resultado tiene tipo int . La expresión! E es equivalente a (0 == E).

Entonces !x !!y solo pueden dar 0 o 1, como int s.

Para otros operadores, en C99, ver también Es el resultado "verdadero" de>, <,!, &&, || o == definido?