elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error en C: (Ivalue required as left...)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en C: (Ivalue required as left...)  (Leído 8,565 veces)
Constantinoplero


Desconectado Desconectado

Mensajes: 346


Veni, vidi, vici


Ver Perfil WWW
Error en C: (Ivalue required as left...)
« en: 13 Noviembre 2011, 02:53 am »

Buenas noches, estoy haciendo un ejercicio voluntario de Informática en C, y vuelvo a tener una duda con el error que me arroja Codeblocks, como ya paso unos días cuando estaba estudiando por mi cuenta.

El programa debe pedir un día, comprobar que sea correcto (1-31), lo mismo con los meses (1-12) y si sale 29 de febrero, asegurarse que es posible porque sea bisiesto.

Código:
    if (dia>=1 && dia<=31 && mes=1 || mes=3 || mes=5 || mes=7 || mes=8 || mes=10 || mes=12)
        printf("Hoy es %u del %u.", dia, mes);

En esta parte del código me sale un error diciendo: 'lvalue required as left operand of assignment'. Concretamente aparece en la línea del if.

¿Por qué aparece? ¿Se puede poner todo eso en la misma línea o debo separarlos?
P.D.: Tengo que hacer el programa con if y con switch, por eso está así.

Saludos.


En línea

Más que buenos principios prefiero mejores finales.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Error en C: (Ivalue required as left...)
« Respuesta #1 en: 13 Noviembre 2011, 03:54 am »

El error se genera debido a que en la condicion del "if" estas utilizando el operador de asignacion '=' cuando deberia ser el de comparacion '==', de esta forma:
Código
  1. if (dia >= 1 && dia <= 31
  2.   && mes == 1 || mes == 3 || mes == 5 || mes == 7
  3.   || mes == 8 || mes == 10 || mes ==12
  4. )
  5.   printf("Hoy es %u del %u.", dia, mes);

Pero con ese cambio no funcionara correctamente si la intencion es verificar que el dia este en el rango 1 .. 31 y el mes sea el indicado (1, 3, 5, 7, 8, 10 o 12) ya que el operador "&&" tiene mayor prioridad que el operador "||".

La forma correcta es utilizando parentesis:
Código
  1. if (dia >= 1 && dia <= 31
  2.   && (mes == 1 || mes == 3 || mes == 5 || mes == 7
  3.   || mes == 8 || mes == 10 || mes == 12)
  4. )
  5.   printf("Hoy es %u del %u.", dia, mes);

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Constantinoplero


Desconectado Desconectado

Mensajes: 346


Veni, vidi, vici


Ver Perfil WWW
Re: Error en C: (Ivalue required as left...)
« Respuesta #2 en: 13 Noviembre 2011, 14:07 pm »

Lo de los paréntesis lo leí buscando, pero como igualaba en vez de comparar seguía saliendo error...

Gracias por la ayuda!

Por cierto, ¿cómo hacéis para poner en colores el código aquí?
En línea

Más que buenos principios prefiero mejores finales.
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Error en C: (Ivalue required as left...)
« Respuesta #3 en: 13 Noviembre 2011, 14:31 pm »

En el menú de "responder", en un cuadro pone "Cambiar color", ahí no es, es justo en el de arriba. Donde pone "GeSHi", seleccionas el lenguaje que estás usando, y metes ahí el código.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
lvalue required as left operand of assignment
Programación C/C++
uhuru 7 11,446 Último mensaje 4 Mayo 2010, 01:39 am
por Og.
[Ubuntu 11.04] - Hardware required to run Unity & Extraño fallo instalador
GNU/Linux
VorteX01 7 9,978 Último mensaje 2 Mayo 2011, 17:08 pm
por VorteX01
required html5 y onsubmit...
Desarrollo Web
basickdagger 1 2,029 Último mensaje 9 Febrero 2014, 13:28 pm
por #!drvy
[Python 3] TypeError: an integer is required (got type str)
Python
n1sen 1 3,684 Último mensaje 16 Noviembre 2017, 01:54 am
por n1sen
ayuda! error: lvalve required as left operand of assignmet
Programación C/C++
NicoSanhueza 1 2,105 Último mensaje 1 Mayo 2018, 18:08 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines