Ejercicio Básico de Operadores en C

Iniciado por palacio29, 14 Febrero 2017, 15:24 PM

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

palacio29

Hola

Tengo el siguiente código

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

int main()
{
double num=123456789.56;
int x,r;
x=num;

r=x%100000/1000/7;

printf("%d",r);

    return 0;
}


La idea el ejercicio es que sepamos que operacion hay que ejecutar primero...Estuve leyendo sobre precedencia de operadores y se dice que de izquierda a derecha viene la multiplicacion, luego la division y luego el %.

El tema es que intento hacer todas las divisiones posibles ... osea 100000/1000 y luego ese resultado / 7 y luego hago el %....y me da cualquier cosa.
El resultado tiene que ser 8 pero no llego a ese resultado...algo estoy haciendo mal o nose porque operacion empezar..

palacio29

Cita de: ~0xefro]~ link=topic=465060.msg2108593#msg2108593 date=1487082698]
Y metiendo paréntesis?

r=x%(100000/1000/7);

Saludos, ;)

Esta mal igual porque tendria que dar 8 y poniendo parentesis da 1.

ivancea96

Multiplicación, división y módulo están al mismo nivel. Luego, se ejecutan de izquierda a derecha.

123456789 % 100000 / 1000 / 7
Modulo
56789 / 1000 / 7
Entre 1000
56
Entre 7
8

palacio29

Cita de: ivancea96 en 14 Febrero 2017, 15:56 PM
Multiplicación, división y módulo están al mismo nivel. Luego, se ejecutan de izquierda a derecha.

123456789 % 100000 / 1000 / 7
Modulo
56789 / 1000 / 7
Entre 1000
56
Entre 7
8


Genial! ahora me quedo claro...pense que la multiplicacion y la division venia primero que el modulo.

ivancea96

Para aclarar, que me olvidé: http://en.cppreference.com/w/c/language/operator_precedence
Ese es e orden. Los que están en el mismo grupo, se resuelven "a la vez" (siguiendo el orden izquierda-derecha o derecha-izquierda que aparece a la derecha)