switch - if c++ ejemplos
¿Cómo se evalúa if statement en c++? (7)
Es más como if ( c != 0 )
Por supuesto != operador puede estar sobrecargado, por lo que no es perfectamente exacto decir que esos son exactamente iguales.
¿Es if ( c ) lo mismo que if ( c == 0 ) en C ++?
Esto solo es cierto para valores numéricos. si c es una clase, debe haber un operador sobrecargado que realice conversión booleana, como aquí:
#include <stdio.h>
class c_type
{
public:
operator bool()
{
return true;
}
};
int main()
{
c_type c;
if (c) printf("true");
if (!c) printf ("false");
}
No, if (c) es lo mismo que if (c != 0) . Y if (!c) es lo mismo que if (c == 0) .
Sí, son lo mismo si cambia == 0 a != 0 .
Saldré del paquete en este ... " if (c) " está más cerca de " if (((bool)c) == true) ". Para tipos enteros, esto significa " if (c != 0) ". Como han señalado otros, sobrecargar al operator != Puede causar cierta extrañeza, pero también puede sobrecargar el " operator bool() " a menos que esté equivocado.
Si c es un puntero, entonces la prueba
if ( c )
no es lo mismo que
if ( c != 0 )
Esta última es una verificación directa de c contra el puntero 0 (nulo), mientras que la primera es en realidad una instrucción para verificar si c apunta a un objeto válido. Sin embargo, los compiladores producen el mismo código.
Si c es un puntero o un valor numérico,
if( c )
es equivalente a
if( c != 0 )
Si c es un booleano (escriba bool [only C ++]), (edit: o un tipo definido por el usuario con la sobrecarga del operador bool ())
if( c )
es equivalente a
if( c == true )
Si c es ni un puntero ni un valor numérico ni un booleano,
if( c )
no compilará