Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 18 Febrero 2017, 00:19 am



Título: Que significa un solo = en un if?
Publicado por: palacio29 en 18 Febrero 2017, 00:19 am
Hola

Tengo este codigo que tengo que analizar:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int a;
  7. scanf("%d",&a);
  8. if(a=0)
  9. {
  10.    printf("Verdadero");
  11. }
  12. else
  13. {
  14.    printf("Falso");
  15. }
  16.  
  17.  
  18.    return 0;
  19. }
  20.  

No entiendo que significa que el if tenga un solo igual en vez de 2.
Osea se que evidentemente no es una comparacion pero nose que hace para que siempre el programa me tome falso.


Título: Re: Que significa un solo = en un if?
Publicado por: engel lex en 18 Febrero 2017, 00:28 am
puede ser que está mal hecho, eso siempre será falso...

un solo igual en un if chequea si lo asignado fue true o no

es decir

Código
  1. if(a=1){
  2.  prinf("esto siempre siempre será cierto");
  3. }else{
  4.  
  5. }
  6.  
  7. if(a=0){
  8.  
  9. }else{
  10.  prinf("esto siempre siempre será falso");
  11. }


Título: Re: Que significa un solo = en un if?
Publicado por: A.I. en 18 Febrero 2017, 00:36 am
Un único igual es una asignación y devuelve el propio valor de la asignación si mal no recuero. Como en tu caso este valor es 0, para c es como si tuvieses un false en el if (para C cualquier valor distinto de 0 es true y 0 es false).


Título: Re: Que significa un solo = en un if?
Publicado por: 0xFer en 18 Febrero 2017, 06:27 am
Osea se que evidentemente no es una comparacion pero nose que hace para que siempre el programa me tome falso.

Se evalúa el valor de a después de hacer la asignación, la condición será verdadera siempre y cuando a no sea 0.


Título: Re: Que significa un solo = en un if?
Publicado por: fflush en 18 Febrero 2017, 10:31 am
Hola,
 
 = Asignacion
 == Comparacion

Por ejemplo:
                        if ( C = 10)  // estas asignando el numero 10 a la variable C

                        if ( C == 10) // estas comparando si el contenido de la variable C es igual a 10


Título: Re: Que significa un solo = en un if?
Publicado por: dato000 en 19 Febrero 2017, 03:07 am
Código
  1. if(a=0)
  2.  

En una expresión condicional, utilizar un solo =, es simplemente un error. Porque? porque no debe usarse una asignación en un condicional (como un if o un switch), ya que ese tipo de expresiones son para verificar si una expresión es verdadera (true) o falsa (false).


Título: Re: Que significa un solo = en un if?
Publicado por: engel lex en 19 Febrero 2017, 03:49 am
Hola,
 
 = Asignacion
 == Comparacion

Por ejemplo:
                        if ( C = 10)  // estas asignando el numero 10 a la variable C

                        if ( C == 10) // estas comparando si el contenido de la variable C es igual a 10

eso el usuario parece saberlo... el asunto es que hace el if, no el "="


Código
  1. if(a=0)
  2.  

En una expresión condicional, utilizar un solo =, es simplemente un error. Porque? porque no debe usarse una asignación en un condicional (como un if o un switch), ya que ese tipo de expresiones son para verificar si una expresión es verdadera (true) o falsa (false).

error, esto es usado con cierta frecuencia ya que te permite ahorrarte algo de codigo

esto te permite evaluar "a" al mismo tiempo que le asignas valor