Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

137
Vistas
¿Por qué la matriz de caracteres se procesa como verdadera mediante la declaración if?

Probé el código que se proporciona a continuación y descubrí que en realidad imprime "sí", lo que significa que la matriz de caracteres se toma como verdadera en la declaración if. Pero me pregunto cuál es la razón. Quiero decir que es una matriz, así que devolvió la "cadena" completa. O devolvió su primer elemento que es "s", o devolvió su ubicación de memoria que se procesa como verdadera, ya que cualquier cosa que no sea 0 es verdadera.

 char a[] = "string"; if (a) { printf("yes"); }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

if (a)

En este contexto, una referencia a una matriz decae en un puntero al primer valor de la matriz. Lo mismo sucedería si se pasara a como un parámetro de función.

Entonces, aquí, a es solo un puntero. Y dado que no es un puntero nulo, esto siempre se evalúa como verdadero.

 char a[6] = "string";

Esto no es realmente relevante, pero esta cadena literal tiene siete caracteres, no seis, por cierto. Te olvidaste del \0 final.

over 4 years ago · Santiago Trujillo Denunciar

0

"string" es en realidad un literal const char[7] en C++ y una constante char[7] en C. Tenga en cuenta que en C++, no puede asignarlo a un char[6] ya que debe proporcionar espacio para el terminador NUL. Sin embargo, puede omitirlo en C.

a decae a un puntero de tipo char* .

En cualquier idioma, ese valor de puntero no puede ser 0 o implícitamente convertible a false . Entonces, por lo tanto, el cuerpo del if se ejecuta.

over 4 years ago · Santiago Trujillo Denunciar

0

En matrices de estilo C como char a[2] = "go"; el identificador de la matriz decae automáticamente en un puntero. Y dado que a apunta a una ubicación en la memoria (es decir, no es NULL o 0 ), la condición de su declaración if siempre se evaluará como true .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda