¿Cómo funciona la negación lógica en C?

He estado usando ! (Negación lógica) en C y en otros idiomas, tengo curiosidad, ¿alguien sabe cómo hacer el suyo? ¿función? ¿O tienes una forma creativa de hacer uno?

 int my_negate(int x) { return x == 0 ? 1 : 0; } 

!e puede ser reemplazado por ((e)?0:1)

Recuerde que el operador bang ‘!’ o signo de exclamación en el lenguaje inglés, está integrado en el lenguaje de progtwigción como un medio para negar.

Considere este ejemplo de operador ternario:

 (alguna condición)?  verdadero Falso;

Ahora, si eso fue negado, el operador ternario sería este

 (alguna condición)?  falso verdadero;

El área común donde se puede poner a algunos progtwigdores en un poco de ajuste es la función strcmp , que devuelve 0 para que las cadenas sean iguales, y 1 para dos cadenas que no son las mismas:

 if (strcmp (foo, "foo")) {

 }

Cuando realmente debería ser:

 if (! strcmp (foo, "foo")) {
 }

En general, cuando se niega, es lo contrario que se muestra en el ejemplo del operador ternario …

Espero que esto ayude.

C considera que todos los valores distintos de cero son “verdaderos” y cero “falso”. La negación lógica se hace verificando contra cero. Si la entrada es exactamente cero, genera un valor distinto de cero; de lo contrario, salida cero. En el código, puede escribir esto como (input == 0) ? 1 : 0 (input == 0) ? 1 : 0 (o puede convertirlo en una sentencia if ).

Cuando pregunta cómo “crear su propio método!”, ¿Quiere decir que quiere escribir una función que niega un valor lógico o desea definir qué hace el operador de punto de exclamación? Si es el primero, entonces la statement que publiqué arriba debería ser suficiente. Si es lo último, entonces me temo que esto es algo que no se puede hacer en C. C ++ soporta la sobrecarga del operador, y si hacer esto es una necesidad estricta, entonces sugeriría buscar allí.

Si desea sobrecargar a un operador, el prototipo adecuado es:

 bool operator!(); 

No soy un gran fanático de los operadores de sobrecarga, pero a algunas personas les gusta su azúcar sintáctica. EDITAR: Esto es sólo C ++! Ponlo en la definición de tu clase.