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á