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

214
Vistas
¿Cómo evalúa el compilador una condición en C?

Tengo una pregunta sobre cómo el compilador evalúa la condición 'Y' en c.

Digamos, escribo una declaración como

 if( (today is Thursday) && (Month is July) ) { //do something }

Suponga que hoy no es jueves, pero el mes es julio.

¿El compilador verifica ambas condiciones y hace 1&0 == 0? O tan pronto como ve que hoy no es jueves, simplemente se salta y ni siquiera se molesta en verificar la condición Mes, ya que es intrascendente.

estoy usando el siguiente gcc

 Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

De acuerdo con el Estándar C (6.5.13 Operador lógico AND)

4 A diferencia del operador & binario bit a bit, el operador && garantiza una evaluación de izquierda a derecha; si se evalúa el segundo operando, hay un punto de secuencia entre las evaluaciones del primer y segundo operando. Si el primer operando se compara igual a 0, el segundo operando no se evalúa.

En cuanto al operador OR lógico (6.5.14 Operador OR lógico), entonces

4 A diferencia de bit a bit | operador, el || el operador garantiza la evaluación de izquierda a derecha; si se evalúa el segundo operando, hay un punto de secuencia entre las evaluaciones del primer y segundo operando. Si el primer operando se compara distinto de 0, el segundo operando no se evalúa .

over 4 years ago · Santiago Trujillo Denunciar

0

Como otros ya han dicho, && es un operador de cortocircuito que, en el caso de && , finalizará la evaluación tan pronto como se conozca el resultado (lo que sucede cuando se pasa a L-> cualquier operando se evalúa como cero/falso, lo cual es una condición suficiente para detener la evaluación posterior) desde 0 && a = 0)

En breve su pseudo-código:

 if( (today is Thursday) && (Month is July) ) { //do something }

es equivalente a esto:

 if (today is Thursday) { if (Month is July) { //do something } }
over 4 years ago · Santiago Trujillo Denunciar

0

El operador && cortocircuita bajo C. Esto significa que si la primera condición evaluada falla y es suficiente para decidir el resultado de la expresión, terminará allí.

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