Que significa un solo = en un if?

Iniciado por palacio29, 18 Febrero 2017, 00:19 AM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

Hola

Tengo este codigo que tengo que analizar:


#include <stdio.h>
#include <stdlib.h>

int main()
{
int a;
scanf("%d",&a);
if(a=0)
{
    printf("Verdadero");
}
else
{
    printf("Falso");
}


    return 0;
}


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.

engel lex

#1
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 (cpp) [Seleccionar]
if(a=1){
 prinf("esto siempre siempre será cierto");
}else{

}

if(a=0){

}else{
 prinf("esto siempre siempre será falso");
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

A.I.

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).

0xFer

Cita de: palacio29 en 18 Febrero 2017, 00:19 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.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

fflush

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

dato000


if(a=0)


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).



engel lex

Cita de: 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

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


Cita de: dato000 en 19 Febrero 2017, 03:07 AM

if(a=0)


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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.