Título: Consulta sobre ejercicio basico en C? Publicado por: palacio29 en 11 Diciembre 2016, 23:19 pm Hola
Tengo una consulta con un problema de una guia de informatica I. El codigo es el siguiente Código
Segun la precedencia, primero viene * , luego la / y por ultimo %. Hice los calculos y me da 3. El tema es que la respuesta correcta, al probarlo en el compilador es un error de compilacion que dice "invalid operand to binary % (have "double and "int"). El tema es que si yo saco el "%c" me permite compilar y ejecutar el programa con normalidad. Ahora si yo pongo el %c da el error de compilacion pero no entiendo ya que a/b es un entero/double...basicamente no entiendo de donde sale ese error de compilacion. Título: Re: Consulta sobre ejercicio basico en C? Publicado por: engel lex en 12 Diciembre 2016, 00:32 am El módulo debe ser entero
Título: Re: Consulta sobre ejercicio basico en C? Publicado por: palacio29 en 12 Diciembre 2016, 14:46 pm El módulo debe ser entero Gracias, o sea, si a/b=28... y tengo el unsigned char c=5...lo que vos decis es que a/b se puede hacer sin ningun problema ...me queda 28%5(char)...osea el compilador no toma el numero 5, sino que solo acepta variables de tipo int?. Título: Re: Consulta sobre ejercicio basico en C? Publicado por: engel lex en 12 Diciembre 2016, 14:55 pm no entendi nada de tu ultima explicación... lo que uise decir es que los operados involucrados en el modulo deben ser de tipo entero o más simples
int%int si uno de los 2 es float falla Título: Re: Consulta sobre ejercicio basico en C? Publicado por: MAFUS en 12 Diciembre 2016, 20:29 pm Lo que quiere decir engel lex es que b es un double y esto hace promocionar a a a double, por tanto el resultado de la división es un valor double. Este resultado, un double, pasa a ser operando del módulo, pero el operador módulo en C solo acepta enteros.
Título: Re: Consulta sobre ejercicio basico en C? Publicado por: jessec01 en 14 Diciembre 2016, 07:45 am para evitar esto errores podemos obligar a nuestra variables para que no importe o que pase sea int
ej: int a; float sum, div; sum=2.45;div=45.1; a=(int) sum/div; printf("%d",a); la convercion informacion aqui http://c.conclase.net/curso/?cap=009 |